Contract.ForAll 不起作用?
我正在尝试使用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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
来自代码合同用户手册< /a>,第 6.6.1 节检查器的当前限制和错误:
From the Code Contracts User Manual, section 6.6.1 Current Limitations of the Checker and Bugs: