C#:声明一个函数永远不会返回null?
问题描述:
背景: 有这样的开发者原则“如果请求的项目不存在,我的函数应该返回null还是抛出异常?”我不想在这里讨论。我决定为所有必须返回值的情况抛出一个异常,并且这个值只在(编程或逻辑)无效请求的情况下才存在。C#:声明一个函数永远不会返回null?
最后我的问题: 我可以标记功能,使编译器知道它永远不会返回null,并警告任何人谁检查,如果返回值是空?
答
您可以使用Code Contracts
来做到这一点。
例子:
public String Method1()
{
Contract.Ensures(Contract.Result<String>() != null);
// To do
}
答
如果你返回一个值类型,那么它不能为null(除非你明确地使用系统的'可空'包装器来使它成为。
答
使用代码契约,你可以定义一个方法没有返回null合同。
using System.Diagnostics.Contracts; // required namespace
public T MethodName()
{
Contract.Ensures(Contract.Result<T>() != null); //where T is the return type.
// method body...
}
[我怎么能证明一个方法永远不会返回null在C#(契约式设计)](可能的重复http://stackoverflow.com/questions/484571/how-can-i-show-这种方法将不会返回空设计合同在c) – 2010-12-01 12:55:53
另外:http://stackoverflow.com/questions/792531/c-how-to-implement-and-use -a-notnull-and-canbenull-attribute – 2010-12-01 12:59:19