[C #, .NET] [VB.NET] практика IEqualityComparer не чувствительно к регистру
Практика в IEqualityComparer , сравнение без учета регистра
// практика
класс InComparer общественности: IEqualityComparer
{
CaseInsensitiveComparer myComparer = новый CaseInsensitiveComparer ();
общественного ИНТ GetHashCode (объект OBJ)
{
вернуться obj.ToString () ToLowerInvariant () GetHashCode ()..;
}
общественности новый BOOL Equals (объект х, объект у)
{
если (myComparer.Compare (х, у) == 0)
{
возвращает истину;
}
еще
{
вернуться ложным;
}
}
}
Во-первых, потому что ни одного случая, так как идентичные с первым, исключение программы происходит во время выполнения.
// ссылка класса
Hashtable MyData = новый Hashtable (новый InComparer ());
myData.Add ( "Первый", "первый");
myData.Add ( "Senond", "второй");
myData.Add ( "Третий", "третий");
myData.Add ( "Четвертый", "четвёртый");
myData.Add ( "Пятый", "пятый");
myData.Add ( "первый", "первый");
Еогеасп (DictionaryEntry myEntry в MyData)
{
Console.WriteLine ( "{0} = {1}", myEntry.Key, myEntry.Value);
}
Конечно, вы можете также использовать CollectionsUtil класс не чувствителен к регистру, эта программа выглядит намного короче.
Hashtable myColl = CollectionsUtil.CreateCaseInsensitiveHashtable ();
myColl.Add ( "А", "1234");
myColl.Add ( "а", "1234");
Если какой-либо ошибки, пожалуйста, сообщите новичку размещения его нести
2010 ~ 2017 C # в четвертом квартале
Оригинал: Большая колонка [C # .NET] [VB.NET] практика IEqualityComparer не чувствительна к регистру