Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Console.WriteLine正确处理空字符串_C#_.net_Console Application - Fatal编程技术网

C# Console.WriteLine正确处理空字符串

C# Console.WriteLine正确处理空字符串,c#,.net,console-application,C#,.net,Console Application,只要找到Console.WriteLine就可以正确处理null字符串 比如Console.WriteLine((字符串)null) 我可以假设大多数类库正确地处理空引用吗 否。 这完全取决于您调用的方法。请参阅每个方法的MSDN文档,了解传递null时的预期内容 在调用其他人的API或库时,假设null是不安全的,尤其是当您没有它的源代码作为参考时。始终阅读文档。如果医生没有说,那就编写防御代码 但是,库方法的编程方式是,当它们不接受null时,它们将抛出异常,告诉您它不是有效参数。这完全取决

只要找到
Console.WriteLine
就可以正确处理
null
字符串 比如
Console.WriteLine((字符串)null)

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

否。

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

在调用其他人的API或库时,假设
null
是不安全的,尤其是当您没有它的源代码作为参考时。始终阅读文档。如果医生没有说,那就编写防御代码


但是,库方法的编程方式是,当它们不接受null时,它们将抛出异常,告诉您它不是有效参数。

这完全取决于您所说的“正确”和方法本身。除非您的意思是“可能会抛出异常,因为它需要一个实际的字符串”,否则不会。。。对

您可以期望(几乎)所有类都能正确处理空引用

然而,我觉得你所说的“正确”和这个类的作者的意思是不一样的

例如,如果您尝试打开一个文件并传递
null
以获取要打开的文件的路径,它不会自动失败,而是会引发异常

如果这就是你所说的“正确处理”的意思,那当然。事实上,我希望所有类都能正确处理空引用


但不要期望程序像什么都没发生一样继续运行。

一般来说,当需要参数(不管是字符串还是其他类型)执行某些操作时,当该参数为null时,该方法通常会异常崩溃

几个例子:

  • 文件。。无法打开“null”文件,因此-->错误
  • 解析-->无法解析“null”,因此-->错误。(是的,他们在2.0中添加了TryParse)
  • 另一方面,当参数不是必需的时候,当它为null时,方法通常会“吞下青蛙”,并将其视为一些默认值,例如空字符串。 在Console对象的WriteLine方法中,它实际上并不需要字符串,它只需将其写入控制台,这样就不必关心它是否为null


    所以就像这里的其他人所说的,这取决于您尝试使用什么方法,并且在尝试传递空值之前最好先阅读。

    对。在调用其他人的API或库时,假设null是不安全的,尤其是当您没有它的源代码作为参考时。始终阅读文档。“如果医生没有说,那就编写防御代码。”迈克·克拉克——没错。感谢添加,更新了答案。顺便说一句,在您描述的情况下,正确处理null意味着什么?写“空”或“”?很好,三个答案,是,不是,还有可能。:)@jb-祝最佳男主角获胜:)。如果你想将“null”显示为字符串,你可以使用
    string test=null??“空”