C#:声明函数永远不会返回null?

时间:2010-12-01 12:50:00

标签: c# compiler-construction

背景 有这个开发人员原则“如果请求的项目不存在,我的函数应该返回null还是抛出异常?”我不想在这里讨论。我决定为所有必须返回值的情况抛出异常,并且只有在(编程或逻辑上)无效请求的情况下才会存在此值。

最后我的问题: 我可以标记一个函数,以便编译器知道它永远不会返回null并警告任何检查返回值是否为null的人吗?

4 个答案:

答案 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'包装器明确地使用它)。