2010-12-01 77 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... 
} 
相關問題