2011-03-08 124 views
0

詮釋,我讀了鑄造將拋出一個異常,如果投不通過,並且有更好的語法來施放它會返回一個異常的空,而不是如果轉換是不可能的。但我忘了它。任何進修? 謝謝。鑄造在C#

+0

神聖的答案溢出! – BrokenGlass 2011-03-08 20:02:58

回答

2

我相信這是你要找的內容...

string s = "36"; 
int resultInt;  
int.TryParse(s, out resultInt); 
1

,如果它是從一個字符串起源,可以隨時使用的TryParse()

if(!Int.TryParse(s, out i)) 
    (handle non-int code here) 
8

我認爲你是指的是as演員。但as不能用於非參考類型,因此您不能執行int x = obj as int

爲了解析int或其他一些價值型,你可以使用類型特定trycast方法..

int x; 
bool success = int.TryParse(someString, out x); 
0

您可以使用「爲」運營商在引用類型。但由於int可以爲null,所以不能使用該運算符。所以對於字符串對象來說,你可以這樣做:

object o = ""; 
string s = o as string; 

但是不能用int來做同樣的事情。

0

你想找的是as

所以int myCasted = myVar as int;

哪,如果你使用

int x = Convert.toInt32(string)
顯然不會在非空值類型

+1

這不會編譯,不能在值類型上使用'As' – BrokenGlass 2011-03-08 20:04:26

+2

它不適用於*不可爲空的值類型*。 – 2011-03-08 20:57:58

+0

@Eric Lippert,這實際上是我的意思,修正 – msarchet 2011-03-08 21:04:40

1

工作在C#它在內部調用int.tryparse作爲convert方法是tryparse的靜態包裝類。我覺得它使用起來要乾淨些,儘管理論上它有點慢。

+0

'Convert.ToInt32'仍然會導致無效輸入。如果他正在尋找無異常行爲,那不是。 – 2011-03-09 15:16:54