以下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);
只是想知道這些不同的方法和相應地使用它們。
以下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);
只是想知道這些不同的方法和相應地使用它們。
(int)a
是一個簡單的施放到的Int32類型和要求a
是一個數字值(浮點型,長等)
Convert.ToInt32(a)
將正確轉換的任何數據類型爲int - 包括string
秒 - 而不是僅僅將它轉換爲另一種類型。
a as int
是與(int)a
相同的隱式轉換(轉換),因此它們都做大致相同的事情。
注意要點:
as
只能與可空/引用類型被使用和不可爲空int
。使用int?
與as
(int)long
會返回一個異常而long as int?
將返回null
'string as int' * can not * null,因爲它返回的類型必須是'int'。 – Chris 2014-10-19 14:21:09
來自MSDN的@Chris:'as運算符就像一個投射操作。但是,如果轉換不可行,則返回null,而不是從實際嘗試該代碼引發異常' – DividedByZero 2014-10-19 14:27:23
:「as運算符必須與引用類型或可爲空類型一起使用('int'是不可爲空值類型)「我假設文檔也在某處說。澄清這是因爲'myvar作爲T'的返回類型是'T',如果T是int,那麼它不能返回null,因爲'int'是一個不能爲空的值類型。 – Chris 2014-10-19 14:29:39
如何閱讀文檔? – Mephy 2014-10-19 14:01:03
注意你也不能使用'as int',因爲它不能爲空,它必須是'as int?'。 – Mephy 2014-10-19 14:03:11
我假設你在問這個問題之前閱讀了文檔。當你這樣做的時候,你也必須讀懂'(int)','int'和'Convert.ToInt32()'的特性。所以我們對你的問題:他們有什麼不清楚的地方? – 2014-10-19 14:03:37