注意:这似乎已在Roslyn中修复
写我的回答时,此问题出现了这一个,其中谈到了的关联性空合并运算符.
提醒一下,null-coalescing运算符的概念就是表单的表达式
x ?? y
Run Code Online (Sandbox Code Playgroud)
首先评估x,然后:
xnull,y则进行求值,这是表达式的最终结果x是非空,y则不评估,的值x是表达的最终结果,转换到编译时间类型的后y如果需要的话现在通常不需要转换,或者它只是从可空类型到非可空类型 - 通常类型相同,或者只是从(比如说)int?到int.但是,您可以创建自己的隐式转换运算符,并在必要时使用它们.
对于简单的情况x ?? y,我没有看到任何奇怪的行为.但是,(x ?? y) ?? z我看到一些令人困惑的行为.
这是一个简短但完整的测试程序 - 结果在评论中:
using System;
public struct A
{
public static implicit operator B(A input)
{
Console.WriteLine("A to B");
return new B();
}
public static implicit operator …Run Code Online (Sandbox Code Playgroud)