Протестируйте объект, чтобы НЕ быть типом - PullRequest
0 голосов
/ 11 сентября 2008

Я знаю, как проверить объект на предмет его типа, используя ключевое слово IS, например,

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

но как вы проверяете, чтобы он не был "баром"? Я не могу найти ключевое слово, которое работает с IS для проверки на отрицательный результат.

Кстати - у меня ужасное чувство, это так очевидно, поэтому заранее извиняюсь ...

Ответы [ 4 ]

13 голосов
/ 11 сентября 2008
if (!(foo is bar)) {
}
4 голосов
/ 11 сентября 2008

Вы также можете использовать в качестве оператора .

Оператор as используется для выполнения преобразования между совместимыми типами.

bar aBar = foo as bar; // aBar is null if foo is not bar
1 голос
/ 17 сентября 2008

Вы должны уточнить, хотите ли вы проверить, является ли объект точно определенного типа или присваиваемым от определенного типа. Например:

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 */}
1 голос
/ 11 сентября 2008

Нет конкретного ключевого слова

if (!(foo is bar)) ...
if (foo.GetType() != bar.GetType()) .. // foo & bar should be on the same level of type hierarchy
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...