我已經打多的情況下,似乎是一個模式:代碼合同編譯器如何認爲這可能爲空?
Contract.Ensures(Contract.Result<BlahType>() != null);
...
BlahType Blah = new BlahType();
...
...
return Blah;
,並抱怨。
在所有情況下,該領域是私人的,沒有別的方法與它混淆。 (這些都是延遲初始化,因爲數據必須來自磁盤。)
當然,我可以在這裏添加一個Contract.Assume,但我不喜歡那種答案。
完整(最小)代碼導致行爲? – 2012-07-25 20:41:26
我不能用你提供的代碼重現這一點,你確定沒有別的東西在修改'Blah'? – 2012-07-25 20:48:11
其他任何'返回'? – 2012-07-25 20:55:14