刚发现Console.WriteLine
可以正确处理null
字符串 像Console.WriteLine((string)null)
;Console.WriteLine正确处理空字符串
我可以假设大多数类库正确地处理空引用吗?
刚发现Console.WriteLine
可以正确处理null
字符串 像Console.WriteLine((string)null)
;Console.WriteLine正确处理空字符串
我可以假设大多数类库正确地处理空引用吗?
嗯......是的。
您可以预期(几乎)所有类都将正确处理空引用。
但是,我觉得你的“正确”意思与该作者的意思不同。
例如,如果您尝试打开文件并通过null
打开文件的路径,它不会默默失败,它会引发异常。
如果这就是你所说的“正确处理”的意思,那么当然可以。实际上,我希望所有类都能正确处理空引用。
但是不要指望程序就像没有发生一样。
号
这充分取决于你调用的方法。当您通过null
时,请参阅每种方法的MSDN文档。
当调用别人的API或库时,对null
进行假设是不安全的,特别是如果您没有将其源代码用作参考时。始终阅读文档。如果文档不说,代码防守。
但是,库方法的编程方式是,当它们不接受null
时,它们会抛出一个异常,告诉您它不是有效的参数。
对。在调用别人的API或库时,对null进行假设是不安全的,特别是如果您没有将其源代码用作参考。始终阅读文档。如果文档不说,代码防守。 – 2010-11-11 08:12:54
@Mike Clark - 确实如此。感谢您的补充,更新了答案。 – 2010-11-11 08:14:33
完全取决于“正确”和“方法”本身的含义。除非你的意思是“可以抛出一个异常,因为它期待一个实际的字符串”,否则不。
通常,当参数(无论是字符串还是任何其他类型)都需要做某事时,该方法通常会在异常时崩溃,当该参数为null时。
几个例子:
在另一方面,当参数不需要方法通常会“吞青蛙”时,它的空,把它当作一些默认值,例如空字符串。 在Console对象的WriteLine方法的情况下,它并不真的需要该字符串,它只是将它写入控制台,因此它不在乎它是否为空。
所以和其他人说的一样,它取决于您尝试使用哪种方法,并且在尝试传递空值之前更好地阅读。
顺便说一句,在你描述的情况下,什么_ incorrectling正确_意味着什么?写'空'或''? – 2010-11-11 08:14:57
不错,三个答案,是的,不,也许。 :) – 2010-11-11 08:19:38
@jb - 愿最好的人赢得:)。 – 2010-11-11 08:22:04