私が以前に尋ねた質問を参照してください: 多くのオブジェクトを含む 2 つのリストを比較する
IEqualityComparer インターフェイスを実装することで、比較がいかに高速に行われるかを見るのは印象的です。
他の質問で述べたように、この比較は、ソース フォルダーを宛先フォルダーにバックアップするのに役立ちます。フォルダーに同期したいので、ファイルの日付を比較する必要があります。私が次のようなことをするときはいつでも:
public class MyFileComparer2 : IEqualityComparer<MyFile>
{
public bool Equals(MyFile s, MyFile d)
{
return
s.compareName.Equals(d.compareName) &&
s.size == d.size &&
s.deepness == d.deepness &&
s.dateModified.Date <= d.dateModified.Date; // This line does not work.
// I also tried comparing the strings by converting it to a string and it does
// not work. It does not give me an error but it does not seem to include the files
// where s.dateModified.Date < d.dateModified.Date
}
public int GetHashCode(MyFile a)
{
int rt = (a.compareName.GetHashCode() * 251 + a.size.GetHashCode() * 251 + a.deepness.GetHashCode() + a.dateModified.Date.GetHashCode());
return rt;
}
}
以上の記号を使用して同様のことができればいいのですが。tick プロパティも使用してみましたが、機能しません。たぶん私は何か間違ったことをしています。このインターフェイスを実装する等号より小さいものを比較することはできないと思います。さらに、このクラスの仕組みがわかりません。リスト全体をどれだけ速く反復処理するかが印象的であることは知っています。