gpt4 book ai didi

c# - CodeContracts - 误报

转载 作者:太空狗 更新时间:2023-10-29 22:20:46 28 4
gpt4 key购买 nike

我刚刚开始在一个现有的中型项目中试验 .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 不可能为空,对吗?我做错了什么吗?

最佳答案

该字段可能被标记为readonly,但不幸的是,静态检查器对此不够智能。因此,由于静态检查器无法自行推断 strs 永远不会为 null,因此您必须通过不变量显式地告诉它:

[ContractInvariantMethod]
private void ObjectInvariant() {
Contract.Invariant(strs != null);
}

关于c# - CodeContracts - 误报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3484700/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com