背景 有这个开发人员原则“如果请求的项目不存在,我的函数应该返回null还是抛出异常?”我不想在这里讨论。我决定为所有必须返回值的情况抛出异常,并且只有在(编程或逻辑上)无效请求的情况下才会存在此值。
最后我的问题: 我可以标记一个函数,以便编译器知道它永远不会返回null并警告任何检查返回值是否为null的人吗?
答案 0 :(得分:9)
您可以使用Code Contracts
执行此操作。
示例:
public String Method1()
{
Contract.Ensures(Contract.Result<String>() != null);
// To do
}
答案 1 :(得分:3)
使用代码约定,您可以定义方法不返回null的契约。
using System.Diagnostics.Contracts; // required namespace
public T MethodName()
{
Contract.Ensures(Contract.Result<T>() != null); //where T is the return type.
// method body...
}
答案 2 :(得分:2)
您正在寻找Code Contracts
答案 3 :(得分:0)
如果返回值类型,则它不能为null(除非您使用系统'nullable'包装器明确地使用它)。