我很好奇转换内置类型的“正确”方法是在.NET中。目前我使用Convert.To[type]([variable])
没有任何空检查或任何东西。这样做的最佳方式是什么?
答案 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)
int
(Int32
)等某些类型具有TryParse
方法。
如果存在这样的方法,我会尝试使用它。
否则,我会按照您的描述进行空检查,然后进行Convert.To
。
不确定是否有“正确”的方式,就像大多数任务一样,它是上下文的。
善,
丹
答案 3 :(得分:1)
这取决于具体情况。我最好的建议是学习并熟悉,所以你可以自己做出更好的选择,但你可能应该从以下方面开始
System.Int32.TryParse()
(大多数基类型都有等价物)
DateTime.ParseExact()