简单的构造函数链接

时间:2012-12-11 12:51:23

标签: c#

所有,我有一个应用程序,我想从另一个应用程序lanch或作为一个独立的实用程序。为了便于从appB启动appA,我在Main() / Program.cs中使用以下代码

[STAThread]
static void Main(string[] args)
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new SqlEditorForm(args));
} 

现在,在SqlEditorForm我有两个构造函数

public SqlEditorForm(string[] args)
    : this()
{
    InitializeComponent();

    // Test if called from appB...
    if (args != null && args.Count() > 0)
    {
        // Do stuff here...
    }
}

和聋人

public SqlEditorForm()
{
    // Always do lots of stuff here...
}

这对我来说看起来不错,但是当单独运行(args.Length = 0)时,SqlEditorForm(string[] args)构造函数被调用,在它进入构造函数执行InitializeComponent();之前,它就会运行并初始化类然后的所有全局变量直接进入默认构造函数。

问题,构造函数的链接似乎发生在错误的顺序中。我想知道为什么?

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

使用参数将所有逻辑移动到构造函数,并从无参数的一个调用该构造函数,传递默认参数值:

public SqlEditorForm()
    :this(null)
{        
}

public SqlEditorForm(string[] args)
{   
    InitializeComponent();
    // Always do lots of stuff here...

    if (args != null && args.Count() > 0)
    {
        // Do stuff here...
    }
}