代码之家  ›  专栏  ›  技术社区  ›  Fyodor Soikin

合同。所有的都不行?

  •  2
  • Fyodor Soikin  · 技术社区  · 14 年前

    我想用 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 .

    我做得对吗?它还能用吗?还是我错过了什么?

    1 回复  |  直到 14 年前
        1
  •  1
  •   Jeff Ogata    14 年前

    Code Contracts User Manual 第6.6.1节:检查程序和错误的当前限制:

    静态合同检查器尚未处理所有或存在的量词。