所有,我有一个应用程序,我想从另一个应用程序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();
之前,它就会运行并初始化类然后的所有全局变量直接进入默认构造函数。
问题,构造函数的链接似乎发生在错误的顺序中。我想知道为什么?
感谢您的时间。
答案 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...
}
}