簡體   English   中英

myData as string,(string)myData和Convert.ToString(myData)之間的差異

[英]Diference between myData as string, (string) myData and Convert.ToString(myData)

我有點好奇知道使用as關鍵字, Casting或使用Convert.To_______()函數有什么區別。

經過一點點搜索,我發現as運算符只執行引用轉換和裝箱轉換。 還有什么其他差異。

我也注意到, as關鍵字很少使用,為什么會如此。 它們中的任何一個是否具有優於其他的性能優勢,或者它們只是框架中的冗余。

(強制轉換)語法非常重載,可以執行:

  • 裝箱/拆箱
  • 參考保留類型轉換
  • 在類型上定義的轉換運算符
  • 內置的原始轉換
  • Nullable-of-T包裝/展開

“as”執行這些的子集

  • 參考保留類型轉換
  • 一些有限的拳擊可以為空的

但是這里的重要特征是它兼作類型關系的無異常測試 - 比使用異常或使用反射測試更有效。 特別是,例如:

// is it a list?
IList list = obj as IList
if(list != null) {
    // specific code for lists
}

如果你堅信一個物體某種東西,那么(演員)是首選,因為這可以作為你信仰的主張。 一個例外(在這種情況下)是可取的。

Convert方法處理不同的場景,包括字符串轉換(否則可通過靜態.Parse方法獲得)

如果有的話,它是我最少使用的轉換。 (強制轉換)和“as”語法非常經常使用。

cast vs as:cast拋出異常,如果無法進行轉換則返回null。 沒有任何性能差異。

轉換:完全不同。 您不能將數字轉換為字符串,但您可以轉換為。 閱讀有關Convert類能夠使用的文檔。

如果您確定要投射的對象是%100,請使用Convert,

如果不使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM