2008-09-11 100 views
0

我知道如何测试一个对象,看它是否是一个类型,使用IS关键字例如测试一个对象是不是一个类型

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

你怎么测试它不是“吧”?我似乎,但无法找到与是测试阴性结果工作的关键词。

顺便说一句 - 我有一个可怕的感觉,这是SOOOO明显,所以道歉提前...

+1

这是一个很好的问题。如果你已经尝试过但并不明白,这并不明显。也就是说,你可能想看看一些C#语法教程,他们将所有这些东西拼出来,还有你还没有问过自己的东西。 – 2009-01-07 04:16:04

回答

13
if (!(foo is bar)) { 
} 
1

没有特定的关键字

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

您也可以使用as operator

as运算符用于在兼容类型之间执行 转换。

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

这是'神秘而怪异'还是利用语言特征? – 2009-01-07 04:18:12

1

你应该清楚你是否想测试的对象是正是从某种类型某种类型或分配。例如:

public class Foo : Bar {} 

而且假设你有:

Foo foo = new Foo(); 

如果你想知道FOO是否没有酒吧(),那么你可以这样做:

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

但如果你想确保foo不是来自Bar,那么简单的检查就是使用as关键字。

Bar bar = foo as Bar; 
if(bar == null) {/* foo is not a bar */} 
+0

我喜欢foo,因为如果它是一个Bar,你肯定会想用foo做点什么,所以你也可以为这种情况编写代码。 – 2009-01-07 04:17:30

相关问题