检查'null'

Yip*_*Yay 1 c# convention null nullreferenceexception

是否C#有一些经验法则或编码约定契约,它处理可能的null论证?

作为一个例子,我正在编写一个自定义方法,它检索一个byte[] data参数.

public static string ConvertDataToMyOwnAndCustomString(byte[] data) { ... }
Run Code Online (Sandbox Code Playgroud)

现在-我应该怎么做,如果传递的datanull

我应该保留它,以便可能NullReferenceException发生吗?或者我应该写支票并做这样的事情:

if (data == null) return null;
Run Code Online (Sandbox Code Playgroud)

jas*_*son 8

普遍接受的模式是抛出一个 ArgumentNullException

if(data == null) { throw new ArgumentNullException("data"); }
Run Code Online (Sandbox Code Playgroud)

如果客户端传递null给您的方法确实是一个错误.现在,您甚至可以通过代码合同强制执行该要求:

Contract.Requires(data != null);
Run Code Online (Sandbox Code Playgroud)

当然,很可能null是你的方法不是错误的情况.那是你决定的,而不是我们.但是不要返回null向您的客户表明发生了错误.

  • @Yippie-Kai-Yay:如果是错误,是的,你应该检查"null".失败快.不要引入其他错误,因为你不应该检查"null".此外,您可以使用代码合同向客户说明该要求.这不是样板,这是有价值的信息. (2认同)