如何在函数代码之前先调用默认构造函数?

Chr*_*ris 2 c# syntax constructor

我有两个构造函数:

public ViewDigiFiles()
{
    InitializeComponent();
    InitializeMyGLControl();
    InitializeMyScrollBar();
    InitializeMouseEvents();
    InitializeKeyboardControls();
    InitializeContextMenu();
    InitializeComboBox();
    InitializeToolStripView();
    InitializeListBox();
    setToDefaultScale();
}

public ViewDigiFiles(List<SelectDataLog.DataLog> d)
    :this()
{
    //how to execute this line first before calling this()?
    datalogList = d;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法datalogList = d;在初始化函数之前执行而不复制并粘贴其下的所有内容?谢谢!

Dav*_*ych 6

将无参数构造函数中的所有方法调用提取到Init方法中:

private void Init()
{
    InitializeComponent();
    InitializeMyGLControl();
    InitializeMyScrollBar();
    InitializeMouseEvents();
    InitializeKeyboardControls();
    InitializeContextMenu();
    InitializeComboBox();
    InitializeToolStripView();
    InitializeListBox();
    setToDefaultScale();
}

public ViewDigiFiles()
{
    Init();
}

public ViewDigiFiles(List<SelectDataLog.DataLog> d)
{
    datalogList = d;
    Init();
}
Run Code Online (Sandbox Code Playgroud)

  • `Init()`应该是私有/受保护的,不是吗? (5认同)