gpt4 book ai didi

c# - 空只读锁对象

转载 作者:行者123 更新时间:2023-11-30 13:07:00 25 4
gpt4 key购买 nike

静态只读对象如何变为空? (我已将 _lock 对象设置为静态而非静态,但始终只读。)

validate 方法有几次工作正常,然后在它被调用 2-3 次后 _lock 对象为空。这是否表明该锁由另一个线程拥有?

enter image description here

最佳答案

除了反射之外,this(更具体地说,通过初始化程序分配的静态变量上的空引用异常)可能发生的另一种方式是,如果您在类的其他地方定义了静态构造函数由于某种原因将该值设置为 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();
}
}

关于c# - 空只读锁对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27161037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com