2009-10-09 81 views

回答

3

许多类型都有,你可以使用的TryParse方法。例如:

string input = null; 
bool result; 
Boolean.TryParse(input, out result); 
// result ... 

上述内容是有效的,并且在解析输入为空时不会引发异常。

当涉及到将项目转换为字符串时,您几乎总是可以依靠对该对象调用ToString()方法。但是,在空对象上调用它将引发异常。

StringBuilder sb = new StringBuilder(); 
Console.WriteLine(sb.ToString()); // valid, returns String.Empty 
StringBuilder sb = null; 
Console.WriteLine(sb.ToString()); // invalid, throws a NullReferenceException 

一个例外是在可空类型上调用ToString(),它也会返回String.Empty。

int? x = null; 
Console.WriteLine(x.ToString()); // no exception thrown 

因此,在调用ToString时要小心;取决于对象,你可能必须明确地检查null。

+0

我最喜欢的是当我看到这样的代码:string test =“123”; txtBox.Text = test.ToString();大声笑 – 2009-10-09 06:09:08

2

某些类型如intInt32)具有TryParse方法。 如果存在这样的方法,我尝试使用它。 否则,我做一个空检查,然后几乎Convert.To如您所述。

不确定是否有“正确”的方式,就像大多数任务是上下文相关的。

善良,

3

看到这个link

在大多数情况下,铸造说“这种 类型A的对象实际上是类型B-派生从-A的一个目的 ” Convert.To *()函数说这 对象不是B型,但有 存在方式转换到B类”

+0

这很不错.... +1。 – David 2009-10-09 05:18:52

+1

我明白转换*是什么,但我想知道做到这一点的最佳方式。 – RCIX 2009-10-09 05:23:41

1

这要看情况而定。我最好的建议是研究并熟悉,这样你就可以在你自己做出更好的选择,但你应该先看看以下内容

System.Int32.TryParse() 

(也有等效于大多数基本类型)

DateTime.ParseExact()

相关问题