不変のデータ構造は第一級の値であるため、他の値と同様に、それらを等値または順序で比較できます。IEqualityComparer<T>
しかし、すべての不変コレクションは/IComparer<T>
インスタンスによってパラメーター化できるため、BCL 不変コレクション プレビューでは事態が複雑になりました。等式関係が非対称になるため、異なる比較子を持つ不変コレクションを比較することは許可されないようです (比較子自体には等式が定義されていないため)。
var xs = ImmutableList<string>.Empty.Add("AAA")
.WithComparer(StringComparer.OrdinalIgnoreCase);
var ys = ImmutableList<string>.Empty.Add("aaa")
.WithComparer(StringComparer.Ordinal);
Console.WriteLine(xs.Equals(ys)); // true
Console.WriteLine(ys.Equals(xs)); // false
この動作は何らかの方法で修正されますか?