我有一個簡單的繼承層次結構,MyType2
繼承自MyType1
。如何將實例變量作爲C#中另一種類型的實例對待
我有一個MyType1
,arg
的實例,作爲方法的參數傳入。如果arg
是MyType2
的一個實例,那麼我想執行一些邏輯,轉換實例。我的代碼看起來像下面的代碼。
必須創建一個新的局部變量b
感覺不雅 - 是否有一種方法可以在沒有附加局部變量的情況下實現相同的行爲?
public MyType1 MyMethod(MyType1 arg)
{
if(arg is MyType2)
{
MyType2 b = arg as MyType2;
//use b (which modifies "arg" as "b" is a reference to it)...
}
return arg;
}
如果你願意展示不同的執行路徑,你可能會得到重構代碼的幫助,這樣你就不必進行這種類型檢查了,這可能會有更好的解決方案。通常你在這裏做的事情可能被認爲是代碼味道。 – 2010-03-18 17:48:12
我明白這樣的顯式類型檢查可以被認爲是一種氣味 - 我可能會重構。 – Ben 2010-03-18 18:15:35