我有一个结构,定义为:
public struct mskzon 
    {
        public string name;
        public int type;
        public DataGridView dgv;
     }然后有一个ArrayList mm = new ArrayList();
                
                mskzon ms = new mskzon();
                ms.name = "ddd";
                mm.Add(ms);
                ms = new mskzon();
                ms.name = "aaa";
                mm.Add(ms);                int i = mm.BinarySearch("aaa");结构老是报错,未能比较数组中的两个元素。 ---> System.ArgumentException: 必须至少有一个对象实现 IComparable。
请问怎么实现比较接口啊?

解决方案 »

  1.   

            public struct mskzon:IComparable
            {
                public string name;
                public int type;
                public DataGridView dgv;
                public int CompareTo(object obj)
                {
                    mskzon target = (mskzon)obj;
                    return this.name.CompareTo(target.name);
                }
            } 
    //---------------------------------
    int i = mm.BinarySearch(ms);
      

  2.   

     public struct mskzon :IComparable 
            {
                public string name;
                public int type;
                public DataGridView dgv;
                public int CompareTo(object obj)
                {
                    mskzon target = new mskzon();
                    target.name = Convert.ToString(obj);
                    return this.name.CompareTo(target.name);               
                } 
            }
      

  3.   

    谢谢仁慈的冰川,确实是obj.tostring()就可以得到name属性。