程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> Effective C#原則3:選擇is或者as操作符而不是做強制類型轉換(1)

Effective C#原則3:選擇is或者as操作符而不是做強制類型轉換(1)

編輯:關於C語言

C#是一個強數據類型語言。好的編程實踐意味著當可以避免從一種數據類型 強制轉化為另種數據類型時,我們應該盡我們的所能來避免它。但在某些時候, 運行時類型檢測是不可避免的。在C#裡,大多數時候你要為調用函數的參數使用 System.Object類型,因為Framwork已經為我們定義了函數的原型。你很可能要 試圖把那些類型進行向下轉化為其它類型的接口或者類。你有兩個選擇:用as運 算符,或者,采用舊式的C風格,強制轉換。(不管是哪一種,)你還必須對變量 進行保護:你可以試著用is進行轉換,然而再用as進行轉換或者強制轉換。

無論何時,正確的選擇是用as運算符進行類型轉換。因為比起盲目的強 制轉換它更安全,而且在運行時效率更高。用as和is運算符進行轉換時,並不是 對所有的用戶定義的類型都能完成的。它們只在運行時類型和目標類型匹配的時 候,轉換才能成功。它們決不會構造一個新的對象來滿足(轉化)要求。

看一個例子。你寫了一段代碼,要轉換一個任意類型的對象實例到一個MyType類 型的實例。你是這樣寫代碼的:

object o = Factory.GetObject( );
// Version one:
MyType t = o as MyType;
if ( t != null )
{
 // work with t, it's a MyType.
} else
{
 // report the failure.
}

或者你這樣寫:

object o = Factory.GetObject( );
// Version two:
try {
 MyType t;
 t = ( MyType ) o;
 if ( t != null )
 {
  // work with T, it's a MyType.
 } else
 {
  // Report a null reference failure.
 }
} catch
{
 // report the conversion failure.
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved