与“是”相反的是什么?

时间:2009-08-27 22:47:01

标签: c#

if(myVariable is SomeType)

除了好奇之外,与此相反的是什么?我想做点什么:

if(!myVariable is SomeType)
if(myVariable is not SomeType)

既不编译。

鉴于“is”在大多数引擎中都是一个不可搜索的单词,这对于找到答案来说很难。

  

重复:

     

C# : ‘is’ keyword and checking for Not

7 个答案:

答案 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))

来自C# : 'is' keyword and checking for Not

答案 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