如果您将null转换为int32,我今天刚遇到
Convert.ToInt32(null)
它返回0
我期待一个InvalidCastException ...
知道为什么会这样吗?
最佳答案
因为那是记录的行为?无论是 Convert.ToInt32(object)
还是 Convert.ToInt32(string)
,文档都非常清楚地指出:
(低于返回值)
要么
与往常一样,如果现实与期望不符,那么您应该做的第一件事就是检查您的期望是否符合记录的行为。
我个人并不完全同意Gavin所说的“与VB6兼容”的说法。我意识到它来自微软,这很可能是它以这种方式行事的真正原因-但我认为这不是以这种方式行事的好理由。有很多特定于VB的转换方法-因此,如果框架设计人员真正地认为返回零是不理想的结果,那么他们应该做他们认为最好的事情,并提供VB6兼容的转换供VB6程序员使用。
显然,一旦在.NET 1.0中定义了该行为,便无法在更高版本中进行更改-但这与说它必须具有与VB6相同的行为方式不同。
关于c# - 为什么Convert.ToInt32(null)在C#中返回0,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11580208/