2011-03-22 50 views

回答

16

二是你施放時間1更優選

+1

+1:短並重點! – 2011-03-22 20:20:15

+0

是的,第二個是兩個給定的首選,但坦率地說有第三個更好的選擇:http://stackoverflow.com/questions/5397311/should-i-prefer-the-is-or-as-operator/5397384 #5397384 – jason 2011-03-22 20:40:25

+0

你可以使用inline is關鍵字: foreach(MyClass i in x) if(i is IMy a)a.M1(); – 2017-08-23 22:54:16

3

秒ond是最好的,因爲你只鑄造一次。

This article也可以幫助理解這一點。 'as'操作'is'檢查並返回一個已鑄造的對象或一個null - 爲你完成所有工作。

3

第二個。這是相同數量的代碼行,但是你避免了兩次演員陣容。

請注意,雖然第二個更好,它不會工作它的類型是一個值類型。您只能在引用或可爲空的類型上使用作爲

10

我喜歡第三種選擇:

foreach(var i in x.OfType<IMy>()) { 
    i.M1(); 
} 
+0

哇,這很酷,很簡短,並且很重要。 – 2011-03-22 21:11:58

8

第二個,因爲這不只是一個演員。或者你也可以使用OfType方法:

foreach (IMy i in x.OfType<IMy>()) { 
    i.M1(); 
} 
相關問題