我虽然condition == false
等同于!( condition )
,但是我发现它们的行为与is关键字不同。
当我使用!( condition )
时,代码将成功编译:
object instance = "Hello world!";
if( !( instance is string value ) )
{
throw new InvalidOperationException();
}
Console.WriteLine( value );
但是,如果我使用condition == false
CS0165使用未分配的局部变量“值”
object instance = "Hello world!";
if( instance is string value == false )
{
throw new InvalidOperationException();
}
Console.WriteLine( value );
在这种情况下,condition == false
和!( condition )
之间有什么区别?