将数据从一种类型转换为另一种类型的“正确”方法是什么?

时间:2009-10-09 05:10:11

标签: c# .net

我很好奇转换内置类型的“正确”方法是在.NET中。目前我使用Convert.To[type]([variable])没有任何空检查或任何东西。这样做的最佳方式是什么?

4 个答案:

答案 0 :(得分:3)

请参阅此link

  

在大多数情况下,演员说“这个   类型A的对象实际上是一个对象   B型衍生自A“   Convert.To *()函数说这个   对象不是B型,而是那里   存在一种转换为B型的方法“

答案 1 :(得分: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。

答案 2 :(得分:2)

intInt32)等某些类型具有TryParse方法。 如果存在这样的方法,我会尝试使用它。 否则,我会按照您的描述进行空检查,然后进行Convert.To

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

善,

答案 3 :(得分:1)

这取决于具体情况。我最好的建议是学习并熟悉,所以你可以自己做出更好的选择,但你可能应该从以下方面开始

System.Int32.TryParse()

(大多数基类型都有等价物)

  

DateTime.ParseExact()