[C#.NET][VB.NET] 实践 IEqualityComparer 不分大小写

你。 提交于 2019-11-29 10:14:13

[C#.NET][VB.NET] 实践 IEqualityComparer 不分大小写


实践IEqualityComparer,不分大小写比较

         //实践
          public class InComparer : IEqualityComparer
          {
              CaseInsensitiveComparer myComparer = new CaseInsensitiveComparer();
              public int GetHashCode(object obj)
              {
                  return obj.ToString().ToLowerInvariant().GetHashCode();
              }
              public new bool Equals(object x, object y)
              {
                  if (myComparer.Compare(x, y) == 0)
                  {
                      return true;
                  }
                  else
                  {
                      return false;
                  }
              }
          }


因为不分大小写所以First与first视为相同,程序在执行时会出现例外。

//引用类
  Hashtable myData = new Hashtable(new InComparer());
  myData.Add("First", "1st");
  myData.Add("Senond", "2nd");
  myData.Add("Third", "3rd");
  myData.Add("Fourth", "4th");
  myData.Add("Fifth", "5th");
  myData.Add("first", "1st");
foreach (DictionaryEntry myEntry in myData)
  {
         Console.WriteLine("{0} = {1}", myEntry.Key, myEntry.Value);
  }


当然也可以用CollectionsUtil类来不分大小写,这段程序看起来就短多了。

  Hashtable myColl = CollectionsUtil.CreateCaseInsensitiveHashtable();
  myColl.Add("A", "1234");
  myColl.Add("a", "1234");


若有谬误,烦请告知,新手发帖请多包涵

2010~2017 C# 第四季

原文:大专栏  [C#.NET][VB.NET] 实践 IEqualityComparer 不分大小写


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!