2011-03-08 126 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