質問

IS キーワードを使用して、オブジェクトが特定の型であるかどうかをテストする方法を知っています。

if (foo is bar)
{
  //do something here
}

しかし、「bar」でないことをテストするにはどうすればよいでしょうか? 否定的な結果をテストするために IS で機能するキーワードが見つからないようです。

ところで、これは非常に明白なことであり、恐ろしい予感がしますので、事前にお詫びします...

役に立ちましたか?

解決

if (!(foo is bar)) {
}

他のヒント

を使用することもできます。 オペレーターとして.

AS演算子は、互換性のあるタイプ間の変換を実行するために使用されます。

bar aBar = foo as bar; // aBar is null if foo is not bar

特にキーワードはありません

if (!(foo is bar)) ...
if (foo.GetType() != bar.GetType()) .. // foo & bar should be on the same level of type hierarchy

オブジェクトが以下であることをテストするかどうかを明確にする必要があります。 その通り 特定のタイプか、 割り当て可能な あるタイプから。例えば:

public class Foo : Bar {}

そして、次のものがあるとします。

Foo foo = new Foo();

foo が Bar() ではないかどうかを知りたい場合は、次のようにします。

if(!(foo.GetType() == tyepof(Bar))) {...}

ただし、foo が Bar から派生していないことを確認したい場合は、as キーワードを使用することで簡単にチェックできます。

Bar bar = foo as Bar;
if(bar == null) {/* foo is not a bar */}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top