[英]C# code puzzle returns a puzzling result
Jon Skeet,如果你正在倾听,这可能是你感兴趣的,因为它与你的代码难题有关... http://codeblog.jonskeet.uk/2014/01/14/a-tale-of-两拼图/
码
public class Test
{
public static void Main()
{
bool? x = (true) ? null : default(bool?);
bool? y = (true) ? x is bool? : default(bool?);
Console.WriteLine(x);
Console.WriteLine(y);
Console.Read();
}
}
产量
假
令我困惑的是,我希望看到这个......
真正
bool? y = (true) ? x is bool? : default(bool?);
既然: default(bool?)
永远不会被击中,为什么x is bool?
返回false
,当它是bool?
?
第一个语句显然将x
的值设置为null
。 第二个语句检查x
“的值是否为” bool?
。
is
运算符不关心变量的声明类型。 它查看正在评估的对象的实际类型。 由于x
设置为null
,则传递给该值 is
运营商为null
,这意味着没有被引用的对象,因而is bool?
返回false
。
来自MSDN :
如果提供的表达式为非null , 则
is
表达式求值为true,并且可以将提供的对象强制转换为提供的类型,而不会引发异常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.