2008-09-11 69 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

相關問題