if(myVariable is SomeType)
除了好奇之外,与此相反的是什么?我想做点什么:
if(!myVariable is SomeType)
if(myVariable is not SomeType)
既不编译。
鉴于“is”在大多数引擎中都是一个不可搜索的单词,这对于找到答案来说很难。
重复:
答案 0 :(得分:32)
尝试
if (!(myVariable is SomeType))
答案 1 :(得分:7)
你需要用括号括起来。
if ( !myVariable is SomeType )
该行将NOT运算符应用于myVariable,而不是整个语句。尝试:
if ( !( myVariable is SomeType ) )
虽然,我会警惕无论如何都要检查对象的类型的代码。您可能想要研究多态的概念。
答案 2 :(得分:4)
var cast = myVariable as SomeType;
if(cast == null)
{
// myVariable is not SomeType
}
这种方法的好处是你现在已经有一个变量,因为SomeType可以立即使用。
答案 3 :(得分:2)
我现在不在编译器前面因此无法检查,但不会
if (!(myVariable is SomeType))
工作?
答案 4 :(得分:1)
if(!(myVariable is SomeType))
答案 5 :(得分:0)
或者通用扩展怎么样?我更喜欢这种方式,以避免有这么多括号。
所以你有:
LocalTime
使用:
if (!MyObject.Is<string>())
//Do blah blah blah
这似乎也更容易阅读。
答案 6 :(得分:0)
请注意,C#9.0现在支持is not
。
例如:
if (e is not null)
{
// ...
}
https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-9#pattern-matching-enhancements