[英]Null readonly lock object
靜態只讀對象如何變為null? (我已將_lock對象設置為靜態對象,而不是靜態對象,但始終為只讀。)
validate方法可以正常運行幾次,然后調用2-3次后,_lock對象為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();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.