请考虑以下代码段:
void Foo(object sender, EventArgs e)
{
if (!(sender is ComboBox comboBox)) return;
comboBox.DropDownWidth = 100;
}
与
相比void Bar(object sender, EventArgs e)
{
if ((sender is ComboBox comboBox) == false) return;
comboBox.DropDownWidth = 100;
}
包含Foo()
的代码在.Net 4.6.1中成功编译,而包含Bar()
的代码导致Use of unassigned local variable 'comboBox'
。
如果没有讨论使用== false
而不是使用否定运算符的原因,有人可以解释为什么编译而另一个不编译?