【发布时间】:2013-01-29 08:36:35
【问题描述】:
我有一个静态容器类,它拥有某个类 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 方法的输出写入控制台?
【问题讨论】:
标签: c# variable-assignment compiler-optimization