gpt4 book ai didi

c# - 是否对 Contract.Ensures 执行静态检查?

转载 作者:行者123 更新时间:2023-11-30 22:21:15 28 4
gpt4 key购买 nike

我不明白为什么静态检查器说这个方法一切正常:

public static int GetNonNegativeValue()
{
Contract.Ensures(Contract.Result<int>() >= 0);

return -1;
}

静态检查开启。

更新:

这也可以。

var i = Doer.GetNonNegativeValue();
Contract.Assert(i < 0);

最佳答案

当您在静态检查器的设置中激活“Infer Requires”时,这个警告似乎消失了。

它将比推断 Contract.Requires(false) ("CodeContracts: Suggested requires: Contract.Requires(false);") 这将使这个方法“无效”,因为它现在可以'在不引发契约(Contract)异常的情况下调用。看起来契约(Contract)检查器没有验证这种方法的 Ensures,因为它无论如何都不会执行 return 语句。

顺便说一句:激活或停用“Show squigglies”不会以任何方式改变此行为。我只能假设 OP 在测试时并没有更改此设置。

关于c# - 是否对 Contract.Ensures 执行静态检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14498871/

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