ISキーワードを使用して、オブジェクトがタイプであるかどうかをテストする方法を知っています。
if (foo is bar)
{
//do something here
}
しかし、「バー」ではないことをどのようにテストしますか?、否定的な結果をテストするために IS で機能するキーワードを見つけることができないようです。
ところで - 私はこれがあまりにも明白であることを恐ろしいと感じているので、事前にお詫び申し上げます...
if (!(foo is bar)) {
}
as 演算子も使用できます。
as 演算子は、互換性のある型間の変換を実行するために使用されます。
bar aBar = foo as bar; // aBar is null if foo is not bar
オブジェクトが正確に特定のタイプであるか、特定のタイプから割り当て可能であるかをテストするかどうかを明確にする必要があります。例えば:
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 */}
特にキーワードはありません
if (!(foo is bar)) ...
if (foo.GetType() != bar.GetType()) .. // foo & bar should be on the same level of type hierarchy