すべて、私は別のアプリケーションから、またはスタンドアロンユーティリティとして実行したいアプリケーションを持っています。appBからのappAの起動を容易にするために、/Program.csで次のコードを使用しMain()
ます
[STAThread]
static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new SqlEditorForm(args));
}
今、SqlEditorForm
私は2つのコンストラクターを持っています
public SqlEditorForm(string[] args)
: this()
{
InitializeComponent();
// Test if called from appB...
if (args != null && args.Count() > 0)
{
// Do stuff here...
}
}
とdeafult
public SqlEditorForm()
{
// Always do lots of stuff here...
}
これは私には問題ないように見えますが、スタンドアロン(args.Length = 0
)として実行すると、SqlEditorForm(string[] args)
コンストラクターが呼び出され、コンストラクターにステップインして実行する前にInitializeComponent();
、クラスのすべてのグローバル変数を初期化してから、デフォルトのコンストラクターに直接ステップインします。
質問、コンストラクターの連鎖が間違った順序で発生しているようです。理由を知りたいですか?
御時間ありがとうございます。