いくつかのクラスへのハンドルを保持する静的コンテナー クラスがありますA
。
public static class Container
{
private static A _a;
public static void Register(A a) { _a = a; }
public static void Run() { _a.DoIt(); }
}
コンテナーA
インスタンスの登録は、A
コンストラクターで実行されます。
public class A
{
public A() { Container.Register(this); }
public void DoIt() { Console.WriteLine("Running!"); }
}
ここで、インスタンス化A
のみを含むメソッドを呼び出してインスタンスを登録するとしA
ます。
public void Init() { var a = new A(); }
理論的には、この割り当てを無視するようにコンパイルを最適化できますか、またはメソッドを呼び出すときに常にA
インスタンス化されることを 100% 確信できますか?Init
例次のコードを実行すると:
Init();
...
Container.Run();
Container._a
常に定義され、メソッドからの出力がDoIt
コンソールに書き込まれますか?