Create Hashtable with specified IEqualityComparer in CSharp
Description
The following code shows how to create Hashtable with specified IEqualityComparer.
Example
using System;/* w w w . ja v a 2 s. com*/
using System.Collections;
using System.Globalization;
class myComparer : IEqualityComparer
{
public new bool Equals(object x, object y)
{
return x.Equals(y);
}
public int GetHashCode(object obj)
{
return obj.ToString().ToLower().GetHashCode();
}
}
class myCultureComparer : IEqualityComparer
{
public CaseInsensitiveComparer myComparer;
public myCultureComparer()
{
myComparer = CaseInsensitiveComparer.DefaultInvariant;
}
public myCultureComparer(CultureInfo myCulture)
{
myComparer = new CaseInsensitiveComparer(myCulture);
}
public new bool Equals(object x, object y)
{
if (myComparer.Compare(x, y) == 0)
{
return true;
}
else
{
return false;
}
}
public int GetHashCode(object obj)
{
return obj.ToString().ToLower().GetHashCode();
}
}
public class SamplesHashtable
{
public static void Main()
{
CultureInfo myCul = new CultureInfo("tr-TR");
Hashtable myHT4 = new Hashtable(new myCultureComparer(myCul));
myHT4.Add("FIRST", "Hello");
foreach (string firstName in myHT4.Keys)
{
Console.WriteLine("{0} {1}", firstName, myHT4[firstName]);
}
}
}
The code above generates the following result.