可能重複:
Casting vs using the 'as' keyword in the CLR
Cast then check or check then cast?檢查某個類型時,使用「is」還是「as」還是「as」和空檢查更好?
假設下面的代碼設置:
public class BaseFoo { ... }
public class DerivedFoo : BaseFoo { ... }
現在,我有一個BaseFoo
對象命名foo
可能會或可能不會實際上是DerivedFoo
。如果它是一個DerivedFoo
對象,我需要添加幾個步驟來處理它。是否有任何非主觀理由,更喜歡其它上述下面的代碼段中的一種:1
選項:
if (foo is DerivedFoo)
{
var dfoo = foo as DerivedFoo;
// Continue processing...
}
選項2:
var dfoo = foo as DerivedFoo;
if (dfoo != null)
{
// Continue processing...
}
個人而言,我認爲選項1更具可讀性和簡潔性,但我想知道是否有任何性能差異或行爲差異,我錯過了。
這是一個愚蠢的玩笑,去選擇2,否則你做兩倍的工作 – BrokenGlass 2012-04-03 17:41:28
愚人?我找不到它。 – FishBasketGordo 2012-04-03 17:42:01
這聞起來很多...具體來說,它打破了替代原則。 – 2012-04-03 17:42:03