在開發(fā)博客,在線代碼示例,以及(最近)甚至是一本書中,我一直對類似的代碼code之以鼻:var y = x as T;y.SomeMethod();或更糟糕的是:(x as T).SomeMethod();這對我來說沒有意義。如果您確定x類型為T,則應(yīng)使用直接強制轉(zhuǎn)換:(T)x。如果不確定,可以使用as但需要檢查null后再執(zhí)行某些操作。上面的代碼所做的就是將(有用的)InvalidCastException變成(沒用的)NullReferenceException。我是唯一認(rèn)為這是公然濫用as關(guān)鍵字的人嗎?還是我錯過了明顯的事情,而上述模式確實有意義?
3 回答

哈士奇WWW
TA貢獻1799條經(jīng)驗 獲得超6個贊
我經(jīng)??吹綄υ撜`導(dǎo)性文章的引用是“按原樣”比強制轉(zhuǎn)換更快的證據(jù)。
本文最明顯的誤導(dǎo)性方面之一是圖形,該圖形未指示正在測量的內(nèi)容:我懷疑它正在測量失敗的強制類型轉(zhuǎn)換(其中“ as”顯然要快得多,因為不會引發(fā)異常)。
如果花時間進行測量,那么您將發(fā)現(xiàn),如預(yù)期的那樣,強制轉(zhuǎn)換成功后,強制轉(zhuǎn)換的速度比“ as” 更快。
我懷疑這可能是“崇拜”使用as關(guān)鍵字而不是強制轉(zhuǎn)換的原因之一。
- 3 回答
- 0 關(guān)注
- 381 瀏覽
添加回答
舉報
0/150
提交
取消