いくつかのクラスへのハンドルを保持する静的コンテナー クラスがあります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コンソールに書き込まれますか?