Contract.ForAll 不起作用?

发布于 2024-09-28 20:42:28 字数 392 浏览 3 评论 0原文

我正在尝试使用Contract.ForAll,但看起来我在这里遗漏了一些东西。

考虑这个小例子:

        var l = new List<string>();
        Contract.Assume( Contract.ForAll( l, s => s != null ) );

        foreach ( var s in l ) Console.WriteLine( s.Length );

尽管有 Contract.Assume 调用,我确实收到了 s.Length“可能在空引用上调用方法”警告代码>.

我这样做对吗?它甚至应该起作用吗?或者我错过了什么?

I'm trying to use Contract.ForAll, and it looks like I'm missing something here.

Consider this small example:

        var l = new List<string>();
        Contract.Assume( Contract.ForAll( l, s => s != null ) );

        foreach ( var s in l ) Console.WriteLine( s.Length );

Despite the Contract.Assume call, I do get a "possible calling a method on a null reference" warning for s.Length.

Am I doing this right? Is it even supposed to work? Or am I missing something?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

后eg是否自 2024-10-05 20:42:28

来自代码合同用户手册< /a>,第 6.6.1 节检查器的当前限制和错误:

静态合约检查器尚未处理量词 ForAll 或 Exists。

From the Code Contracts User Manual, section 6.6.1 Current Limitations of the Checker and Bugs:

The static contract checker does not yet deal with quantifiers ForAll or Exists.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文