C#Convert.ToDecimal(string)
和Decimal.Parse(string)
?之间有什么区别?
在什么情况下你会使用一个而不是另一个?
它对性能有何影响?
在两者之间进行选择时,我应该考虑哪些其他因素?
要记住一个重要的区别:
Convert.ToDecimal
0
如果给它一个null
字符串将返回.
decimal.Parse
ArgumentNullException
如果要解析的字符串是,则抛出一个null
.
来自bytes.com:
Convert类用于转换各种类型,因此您可以使用Decimal.Parse将更多类型转换为Decimal,而Decimal.Parse只能处理String.另一方面,Decimal.Parse允许您指定NumberStyle.
十进制和十进制是别名并且是相等的.
对于Convert.ToDecimal(string),在内部调用Decimal.Parse.
Morten Wennevik [C#MVP]
由于Decimal.Parse是由Convert.ToDecimal在内部调用的,如果您有极端的性能要求,您可能希望坚持使用Decimal.Parse,它将保存堆栈帧.
您可能没有想到的一个因素是Decimal.TryParse
方法.双方Convert.ToDecimal
并Parse
抛出异常,如果他们不能将字符串转换为正确的十进制格式.TryParse方法为您提供了一个很好的输入验证模式.
decimal result; if (decimal.TryParse("5.0", out result)) ; // you have a valid decimal to do as you please, no exception. else ; // uh-oh. error message time!
对于错误检查用户输入,这种模式非常令人难以置信.