現在、HashSet<T>
のコンストラクタでは、均等比較を自分で定義することができます。これはHashSet<T>(IEqualityComparer<T> comparer)
コンストラクタです。 このEqualityComparerをラムダとして定義したいと思います。ラムダで定義されたカスタムIEqualityCompareを持つHashSetコンストラクタ?
ラムダを通して比較者を生成させるクラスを作ったクラスを作ってから、Except()などのエクステンションメソッドを使ってこのクラスの構造を隠すことができました。
私は同じことをやっていますが、コンストラクタを使用したいと思います。エクステンションメソッドを使ってコンストラクタを作成することは可能ですか?または、何とか私がHashSet<T>(Func<T,T,int> comparer)
を作成する別の方法がありますか?明確にするために
--UPDATE--
、これは私が達成しようとしているもののフリーハンドバージョン(の抜粋)です:
HashSet<FileInfo> resultFiles = new HashSet<FileInfo>(
srcPath.GetFiles(),
new LambdaComparer<FileInfo>(
(f1, f2) => f1.Name.SubString(10).Equals(f2.Name.SubString(10))));
以上の理想的
HashSet<FileInfo> resultFiles = new HashSet<FileInfo>(
srcPath.GetFiles(),
(f1, f2) => f1.Name.SubString(10).Equals(f2.Name.SubString(10)));
ブログの投稿が壊れているIMO - 元のハッシュコードを呼び出すだけでハッシュコードが生成されます。ハッシュコードは、等価関数と互換性のないハッシュにつながります。私はブログにコメントしました。 –