今天我讀到了關於C#4.0代碼契約的內容。這似乎是在驗證參數的方法常見的做法是不爲空如下:C#代碼契約 - 避免檢查空引用的參數
Contract.Requires(p != null);
但是它似乎很不合理,我認爲我必須爲每一個接口方法的每一個參數做到這一點在我的代碼中。在絕大多數情況下,參數預計不會爲空。我預計會有某種機制允許定義一些特定參數爲「允許」爲null(類似於Java中的「@Nullable」註釋),並且Contracts框架將自動確保其餘部分不會空值。
除了在這個「樣板檢查」(以及許多「合同類」)上節省了大量時間外,它還可以使許多時候沒有任何條件需要驗證,除非非空參數)合同代碼更清潔,更「邏輯導向」。
我的問題是,有沒有辦法做到這一點,如果沒有,那裏沒有一個,或者爲什麼我的方法在這裏錯了?
它本來是有用的,但沒有任何速記可以做到這一點,因爲沒有人改變語言規範來提供它,然後實現它併發布它。請參閱Eric Lippert在此處對類似問題的回覆:http://stackoverflow.com/questions/2806894/why-c-sharp-doesnt-implement-indexed-properties – 2013-03-18 07:20:53
您可以使用'crn'片段自動生成樣板這些非空的語句,這減少了鍵入。 – 2013-03-31 19:56:50