首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >空只读锁定对象

空只读锁定对象
EN

Stack Overflow用户
提问于 2014-11-27 00:09:08
回答 1查看 1K关注 0票数 4

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

验证方法可以正常工作几次,然后在调用2-3次之后,_lock对象为null。这是锁被另一个线程拥有的指示器吗?

EN

回答 1

Stack Overflow用户

发布于 2014-11-27 00:22:05

除了反射之外,这种情况(更具体地说,对于通过初始化器分配的静态变量上的空引用异常)可能发生的另一种方式是,如果在类的其他地方定义了一个静态构造函数,由于某种原因将值设置为null,例如:

代码语言:javascript
运行
复制
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();
    }
}
票数 -4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27161037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档