我开始使用 c# 中的合同进行编码。我想在 C# 中表达以下属性
ISet<Tuple<A,B>> set;
Contract.Requires(!Contract.Exists(set, (e1,e2) => (((e1 != null) && (e2 != null)) && (e1.Item1 == e2.Item1) && (e1.Item2 != e2.Item2))));
即如果两个元组的第一个元素相同,则第二个元素也应该相同。
这里的问题是 (e1,e2) => ... 由于有两个参数,它不是一个有效的表达式。有人现在如何用 e1 和 e2 表达这个合同吗?或者如何重写?