在C#中,要自定義Map集合(字典)的比較器,你需要創建一個實現IEqualityComparer<T>
接口的類
IEqualityComparer<T>
接口:using System.Collections.Generic;
public class CustomComparer : IEqualityComparer<string>
{
public bool Equals(string x, string y)
{
// 在這里實現你的相等性比較邏輯
return x.ToLower() == y.ToLower();
}
public int GetHashCode(string obj)
{
// 在這里實現你的哈希碼生成邏輯
return obj.ToLower().GetHashCode();
}
}
在上面的示例中,我們創建了一個名為CustomComparer
的類,該類實現了IEqualityComparer<string>
接口。我們重寫了Equals
和GetHashCode
方法,以便在比較字符串時不區分大小寫。
Dictionary<TKey, TValue>
實例:var customDict = new Dictionary<string, int>(new CustomComparer());
customDict["apple"] = 1;
customDict["Apple"] = 2; // 這將更新"apple"的值,因為我們的比較器不區分大小寫
在這個例子中,我們創建了一個Dictionary<string, int>
實例,并使用自定義比較器CustomComparer
作為參數傳遞給構造函數。這樣,當我們向字典添加元素時,它將使用我們自定義的比較邏輯來確定鍵是否相等。