2010-12-01 79 views
7

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

最后我的问题: 我可以标记功能,使编译器知道它永远不会返回null,并警告任何人谁检查,如果返回值是空?

+0

[我怎么能证明一个方法永远不会返回null在C#(契约式设计)](可能的重复http://stackoverflow.com/questions/484571/how-can-i-show-这种方法将不会返回空设计合同在c) – 2010-12-01 12:55:53

+0

另外:http://stackoverflow.com/questions/792531/c-how-to-implement-and-use -a-notnull-and-canbenull-attribute – 2010-12-01 12:59:19

回答

7

您可以使用Code Contracts来做到这一点。

例子:

public String Method1() 
    { 
     Contract.Ensures(Contract.Result<String>() != null); 

     // To do 
    } 
0

如果你返回一个值类型,那么它不能为null(除非你明确地使用系统的'可空'包装器来使它成为。

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... 
} 
相关问题