clq

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

http://topic.csdn.net/u/20081031/15/0f31a340-d473-4c88-b859-256eea7e9132.html

其实很简单
Dictionary <string, object> dictionary = new Dictionary <string, object>(StringComparer.OrdinalIgnoreCase);
当初也是不知道有这个构造函数绕了个大圈子。MS的设计确实有点水准的。

--------------------------------------------------

http://topic.csdn.net/t/20050427/16/3971146.html

再写一遍:
new Hashtable(System.StringComparer.Create(System.Globalization.CultureInfo.CurrentCulture, true))

vwxyzh:
我是要实现一个自己的hashtable类提供给我的用户去调用API,不是让用户写你提供的方法去new一个出来,请问我自己的类怎么达到你写的这种功能
我这样写可是编译不过:

public class MyHash:Hashtable
{
  public MyHash() {
  base(System.StringComparer.Create(System.Globalization.CultureInfo.CurrentCulture, true));
  }


说是在此上下文中使用base无效,看来与java不一样啊

c#里面是这么写的:
public MyHash()
  : base(System.StringComparer.Create(System.Globalization.CultureInfo.CurrentCulture, true))
{
}

--------------------------------------------------

泛型的Distinct(IEqualityComparer)的用法

针对数组可以用List.Distinct(),可以过滤掉重复的内容。

针对对象中的某个字段只能用Distinct(IEqualityComparer<T>)

用法:


 1  public class AppIndex:BasePage
 2     {
 3         public void DoGet()
 4         {
 5             List<test11> list_test = new List<test11>();
 6             list_test.Add(new test11() { 
 7             m=1,
 8             v="one"
 9             });
10             list_test.Add(new test11()
11             {
12                 m = 2,
13                 v = "two"
14             });
15             list_test.Add(new test11()
16             {
17                 m = 3,
18                 v = "three"
19             });
20             list_test.Add(new test11()
21             {
22                 m = 4,
23                 v = "fornt"
24             });
25              list_test.Add(new test11()
26             {
27                 m = 4,
28                 v = "fornt"
29             });
30               list_test.Add(new test11()
31             {
32                 m = 3,
33                 v = "fornt"
34             });
35               var ss = list_test.Distinct(new Comparint());//这里调用
36             this.Add("mylist",new Travel.DAL.AppActive().GetList(BaseCode));
37         }
38            }
39 
40    public class test11
41    {
42        public int m { getset; }
43        public string v { getset; }
44    }
45    public class Comparint : IEqualityComparer<test11>
46    {
47 
48        public bool Equals(test11 x, test11 y)
49        {
50            if (x == null && y == null)
51                return false;
52            return x.m==y.m;
53        }
54 
55        public int GetHashCode(test11 obj) {
56            return obj.ToString().GetHashCode();
57        }
58    }
posted on 2011-08-09 15:46  clq  阅读(1294)  评论(0编辑  收藏  举报