我在编程时注意到了以下的phenonema:
This code片段实际上会编译(令我惊讶)
public static void Main()
{
object obj = "some string";
if (!(obj is string str))
{
Console.WriteLine("Hmm... we just broke space and time");
return;
}
Console.WriteLine(str);
}
另一方面,This snippet无法编译,就像我尝试的其他大多数东西一样:
public static void Main()
{
object obj = "some string";
if (obj is string str == false)
{
Console.WriteLine("Hmm... we just broke space and time");
return;
}
//CS0165: Use of unassigned local variable 'str'
Console.WriteLine(str);
}
我的问题:
为什么第一个代码片段编译但第二个代码片段不编译?首先应该对我的理解obj is string str
进行评估,然后才会对!
运算符或==
运算符进行评估,因此我真的不知道这种差异如何产生影响