实现IComparable泛型接口结构体
public struct myKeyValuePair:IComparable<myKeyValuePair>
{public string Name;
public int Age;
#region IComparable<myKeyValuePair> 成员
int IComparable<myKeyValuePair>.CompareTo(myKeyValuePair other)
{
if (this.Age > other.Age)
{
return 1;
}
if (this.Age == other.Age)
{
return 0;
}
else
{
return -1;
}
}
#endregion
}
实现IComparable泛型接口类
public class myList:IComparable<myList>
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
private int age;
public int Age
{
get { return age; }
set { age = value; }
}
#region IComparable<myList> 成员
int IComparable<myList>.CompareTo(myList other)
{
if (this.age < other.age)
{
return 1;
}
if (this.age == other.age)
{
return 0;
}
else
{
return -1;
}
}
#endregion
}
测试代码:
//类自定义比较器
List<myList> ls = new List<myList>();
myList list = new myList();
list.Name = "王小燕";
list.Age = 15;
ls.Add(list);
list = new myList();
list.Name = "马小磊";
list.Age = 18;
ls.Add(list);
ls.Sort();
//结构的自定义比较器
List<myKeyValuePair> keyvalue = new List<myKeyValuePair>();
myKeyValuePair kv = new myKeyValuePair();
kv.Name = "a";
kv.Age = 20;
keyvalue.Add(kv);
kv = new myKeyValuePair();
kv.Name = "b";
kv.Age = 15;
keyvalue.Add(kv);
keyvalue.Sort();
//第二种实现方式
keyvalue.Sort(delegate(myKeyValuePair a, myKeyValuePair b) {
if (a.Age > b.Age)
{
return -1;
}
if (a.Age == b.Age)
{
return 0;
}
else
{
return 1;
}
});
总结:可以指定复杂类型数据按怎样的方式排序(比如实现Dictionary类型数据的排序)