我简化了我的问题,因为扩展方法与它无关。
以下是代码段:
class MyClass
{
private static readonly char[] InvalidChars = new []{'\\', '/'};
public MyClass()
{
if (InvalidChars == null)
{
//how can this block be accessable?
}
}
}
我的问题是:在MyClass构造函数中访问InvalidChars时,是否有任何情况可以返回null?显然有,因为我在我的应用程序中看到的。虽然我无法理解可能的方法。
答案 0 :(得分:0)
由于您已将其标记为静态,因此只能在类的静态构造函数中初始化readonly变量。
在声明中初始化变量时,例如:
public readonly int y = 5;
对于实例字段,在包含字段声明的类的实例构造函数中,或静态字段,在包含字段声明的类的静态构造函数中。这些也是将readonly字段作为out或ref参数传递的唯一上下文。
因此,当您在声明中删除static关键字时,您将能够在构造函数中初始化变量。
答案 1 :(得分:0)
class MyClass
{
private static readonly MyClass Default = new MyClass();
private static readonly char[] InvalidChars = new []{'\\', '/'};
public MyClass()
{
if (InvalidChars == null)
{
//how can this block be accessable?
}
}
}
难怪我得到了一个空白。