C#coalesce运算符不替换null方法返回值?

Aus*_*mer 5 c# coalesce null-coalescing-operator null-coalescing

我有这个代码:

MyClass _localMyClass = MyClassDAO.GetMyClassByID(123) ?? new MyClass();
Run Code Online (Sandbox Code Playgroud)

这是方法:

    public static MyClass GetMyClassByID(int id)
    {
        var query = from m in ctx.MyClass
                    where m.MyClassID == id
                    select m;

        return query.FirstOrDefault<MyClass>();
    }
Run Code Online (Sandbox Code Playgroud)

因此FirstOrDefault(),在实体框架上下文中找不到命中,这是"ctx"对象.因此,要返回的'default'值是null,因为查询的目标是一个类.

第一个代码的??结果,使用,导致_localMyClass什么?我会说它会是new MyClass().相反,_localMyClass最终为空.我尝试用各种括号分组逻辑,但仍然没有运气.

还在; 当我设置一个调试断点,并将其复制/粘贴MyClassDAO.GetMyClassByID(123) ?? new MyClass()到Visual Studio的监视屏幕时,结果是new MyClass()而不是null.

任何人都可以解释为什么它会以这种方式工作吗?为什么它不能识别方法返回值null然后使用该new部分?

Aus*_*mer 0

关闭并重新打开 Visual Studio 后,代码运行良好。

我正在使用带有 service pack 1 的 Visual Studio Ultimate 2010。

我过去曾遇到过这种情况,应该记得先尝试一下。我注意到 VS 有时似乎表现得很奇怪,特别是在调试中运行 Web 应用程序时,特别是在本地运行 Web 应用程序(从我的本地 IIS)并附加到 w3wp.exe 时。