我有一个静态容器类,它拥有某个类的句柄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(); }
从理论上讲,是否可以优化编译以忽略此分配,或者我是否可以 100% 确定在调用该方法A
时始终实例化Init
?
示例当我运行以下代码时:
Init();
...
Container.Run();
将Container._a
始终定义并将DoIt
方法的输出写入控制台?