Console.WriteLine正确处理空字符串

时间:2010-11-11 08:10:53

标签: c# .net console-application

发现Console.WriteLine可以正确处理null字符串 像Console.WriteLine((string)null);

我可以假设大多数类库正确处理空引用吗?

4 个答案:

答案 0 :(得分:10)

这完全取决于您调用的方法。请参阅每种方法的MSDN文档,了解传递null时的预期结果。

在调用其他人的API或库时,对null进行假设绝不是安全的,特别是如果您没有将其源代码用作参考。始终阅读文档。如果文档没有说,请防守代码。

然而,库方法的编程方式是,当它们不接受null时,它们会抛出一个异常,告诉你它不是一个有效的参数。

答案 1 :(得分:4)

嗯......是的。

您可以预期(几乎)所有类都将正确处理空引用。

但是,我觉得“正确”的意思与班级作者的意思不同。

例如,如果您尝试打开文件并将null传递给要打开的文件的路径,它将不会以静默方式失败,它将引发异常。

如果你的意思是“正确处理”,那么肯定。实际上,我希望所有类都能正确处理空引用。

但是,不要指望该计划只是拖延,好像什么也没发生。

答案 2 :(得分:0)

这完全取决于你所说的“正确”和方法本身。除非你的意思是“可能因为期待一个实际的字符串而抛出异常”,否则就没有。

答案 3 :(得分:0)

通常,当参数(无论字符串或任何其他类型是无关紧要)执行某些操作时,当该参数为null时,该方法通常会因异常而崩溃。

几个例子:

  1. Files ..无法打开“null”文件,因此 - >错误。
  2. Parse - >无法解析“null”,所以 - >错误。 (是的,他们在2.0中添加了TryParse)
  3. 另一方面,当不需要参数时,该方法通常会在它为空时“吞下青蛙”并将其视为某个默认值,例如空字符串。 对于Console对象的WriteLine方法,它并不真正需要字符串,它只是将其写入控制台,因此它不关心它是否为空。

    与其他人一样,这取决于您尝试使用的方法,并且在尝试传递空值之前最好先阅读。