我已经打多的情况下,似乎是一个模式:代码合同编译器如何认为这可能为空?
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