我刚刚开始在一个现有的中型项目上使用 .NET 4 中的 CodeContracts 进行试验,令我惊讶的是静态检查器给了我关于以下代码的编译时警告:
public class Foo
{
private readonly List<string> strs = new List<string>();
public void DoSomething()
{
// Compiler warning from the static checker:
// "requires unproven: source != null"
strs.Add("hello");
}
}
为什么 CodeContracts 静态检查器抱怨 strs.Add(...) 行?strs 不可能为空,对吧?难道我做错了什么?