gpt4 book ai didi

c# - 使用变量否定 'is' 运算符仅适用于 '!' 但不适用于 '== false'

转载 作者:行者123 更新时间:2023-12-03 14:12:59 25 4
gpt4 key购买 nike

为什么(expr is type varname) == false给出编译错误,但 !(expr is type varname)编译?

public static void Foo(object o)
{
if(!(o is string s)) // <-- Using '!'
{
return;
}

Console.WriteLine(s); // <-- OK

}
public static void Bar(object o)
{
if((o is string s) == false) // <-- Using '== false'
{
return;
}

Console.WriteLine(s); // <--Error: Use of unassigned local variable 's'
}
现场示例: https://dotnetfiddle.net/nYF7b6

最佳答案

编译器(还)不够聪明,无法发现这种情况:它不会考虑诸如 == false 之类的因素。进入确定分配分析。
has been proposed然而,由语言设计团队之一(另请参阅那里的相关问题)。看起来他们目前正计划在 C# 10 中涵盖这一点。

关于c# - 使用变量否定 'is' 运算符仅适用于 '!' 但不适用于 '== false',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66081810/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com