Mas*_*ity 5 c# static static-constructor
所以这就是我在想的......
public class MyClass
{
public const string MyConstant = "MyConstantValue";
private static MyClass DefaultInstance;
static MyClass()
{
DefaultInstance = new MyClass();
}
}
...
NotificationService.RegisterForNotification(MyClass.MyConstant, Callback);
Run Code Online (Sandbox Code Playgroud)
这项工作还是我需要使用类似的东西 static readonly 属性 字段触发静态构造函数?
使用常量不一定会导致成员访问,这会导致调用静态构造函数。编译器被允许(甚至鼓励)在编译时替换常量的值。
您建议的解决方法static readonly应该没问题,尽管readonly建议的是一个字段,而不是一个属性。当属性没有 setter 时,属性是只读的,readonly不涉及关键字。
一个简单的例子:
class HasSConstructor
{
internal const int Answer = 42;
static HasSConstructor()
{
System.Console.WriteLine("static constructor running");
}
}
public class Program
{
public static void Main()
{
System.Console.WriteLine("The answer is " + HasSConstructor.Answer.ToString());
}
}
Run Code Online (Sandbox Code Playgroud)
.NET 4.0下的输出:
答案是42
静态构造函数永远不会运行!