カスタムコンペアラが必要なLINQをいくつか実行していますので、IEqualityComparer
を実装する新しいクラスを作成しました。しかし、私がそれを使うときは、毎回そのインスタンスを作成しなければなりません。共有IEqualityComparerを作成する
Dim oldListOnly = oldList.Except(newList, New MyEqualityComparer)
Dim newListOnly = newList.Except(oldList, New MyEqualityComparer)
.NETの仕組みを誤解しているかもしれませんが、毎回新しい比較者を作成するのは無駄です。私は実際には1つのインスタンス(静的と同等のC++/C#)を必要とします。
私は "static"クラスを作成しようとしましたが、それはin vb.net is a moduleです。しかし'Implements' not valid in Modules
エラーが発生しました。
私はその後、私のクラスに等しく、GetHashCodeメソッドの機能共有方法を作ってみましたが、このエラーを得た:Methods that implement interface members cannot be declared 'Shared'.
任意のアイデアをここに私の目標を達成するためにどのように?あるいは、私は単に舞台裏で起こっていることを誤解していますか?廃棄物が顕著になることはほとんどありませんが、単に
Dim comparer = New MyEqualityComparer
Dim oldListOnly = oldList.Except(newList, comparer)
Dim newListOnly = newList.Except(oldList, comparer)
。それは私が思いついた最善の解決策です(しかし、私はそれを私が使っているクラスの私的なメンバーにしようと考えていました)。しかし、私は共有IEqualityComparerが何らかの形で可能であるかどうか不思議です。 –