静态只读对象如何变为空?(我已经将_lock对象设置为静态的,而不是静态的,但始终是只读的。)
验证方法可以正常工作几次,然后在调用2-3次之后,_lock对象为null。这是锁被另一个线程拥有的指示器吗?

发布于 2014-11-27 00:22:05
除了反射之外,这种情况(更具体地说,对于通过初始化器分配的静态变量上的空引用异常)可能发生的另一种方式是,如果在类的其他地方定义了一个静态构造函数,由于某种原因将值设置为null,例如:
class Program
{
class A
{
private static readonly object _lock = new object();
public void Validate()
{
lock (_lock) // NullReferenceException here...
{
Console.WriteLine("Not going to make it here...");
}
}
static A()
{
Console.WriteLine(_lock.ToString());
Console.WriteLine("Now you can see that _lock is set...");
_lock = null;
}
}
static void Main(string[] args)
{
var a = new A();
a.Validate();
}
}https://stackoverflow.com/questions/27161037
复制相似问题