如果您将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/

10-13 04:59