2014-10-19 206 views
1

以下cast/convert之間的區別是什麼?'(int)a','a as int'和C#中的Convert.ToInt32(a)之間的區別

string a = 5; 
int b = (int)a; 
int c = a as int; 
int d = Convert.ToInt32(a); 

只是想知道這些不同的方法和相應地使用它們。

+2

如何閱讀文檔? – Mephy 2014-10-19 14:01:03

+0

注意你也不能使用'as int',因爲它不能爲空,它必須是'as int?'。 – Mephy 2014-10-19 14:03:11

+2

我假設你在問這個問題之前閱讀了文檔。當你這樣做的時候,你也必須讀懂'(int)','int'和'Convert.ToInt32()'的特性。所以我們對你的問題:他們有什麼不清楚的地方? – 2014-10-19 14:03:37

回答

3

(int)a是一個簡單的施放到的Int32類型和要求a是一個數字值(浮點型,長等)

Convert.ToInt32(a)將正確轉換的任何數據類型爲int - 包括string秒 - 而不是僅僅將它轉換爲另一種類型。

a as int是與(int)a相同的隱式轉換(轉換),因此它們都做大致相同的事情。

注意要點:

  • as只能與可空/引用類型被使用和不可爲空int。使用int?as
  • (int)long會返回一個異常而long as int?將返回null
+0

'string as int' * can not * null,因爲它返回的類型必須是'int'。 – Chris 2014-10-19 14:21:09

+0

來自MSDN的@Chris:'as運算符就像一個投射操作。但是,如果轉換不可行,則返回null,而不是從實際嘗試該代碼引發異常' – DividedByZero 2014-10-19 14:27:23

+0

:「as運算符必須與引用類型或可爲空類型一起使用('int'是不可爲空值類型)「我假設文檔也在某處說。澄清這是因爲'myvar作爲T'的返回類型是'T',如果T是int,那麼它不能返回null,因爲'int'是一個不能爲空的值類型。 – Chris 2014-10-19 14:29:39

相關問題