私は、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))));
つまり、2 つのタプルの最初の要素が同じ場合、2 番目の要素も同じでなければなりません。
ここでの問題は、(e1,e2) => ... が 2 つの引数のために有効な式ではないことです。e1とe2の両方でこの契約を表現する方法はありますか? あるいはどう書き直すか。