gpt4 book ai didi

.net - Contract.Invariant 不被静态验证器检查

转载 作者:行者123 更新时间:2023-12-03 13:35:06 24 4
gpt4 key购买 nike

我正在试验 Code Contract,但遇到了一个问题。我有课:

public class SpecialPoint
{
public int X { get; set; }
public int Y { get; set; }

public SpecialPoint(int x, int y)
{
Contract.Requires<ArgumentException>(y > x);
X = x;
Y = y;
}


[ContractInvariantMethod]
private void ClassContract()
{
Contract.Invariant(Y > X);
}
}

我对它进行了测试:
[TestFixture]
class SpecialPointTests
{
[Test]
public void SpecialPoint()
{
var p = new SpecialPoint(10, 20);
p.X = 30;
}
}

我希望静态检查器警告我分配 p.X =30;因为这违反了不变性,但它只发生在运行时。
我启用了静态分析。我的版本是 1.7.11202.10。

最佳答案

来自 MSDN page on Contract.Invariant

During run-time checking, invariants are checked at the end of each public method.

关于.net - Contract.Invariant 不被静态验证器检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27420729/

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