c#之List排序

1.List自带的排序方法

List容器自带一个.Sort()方法

代码示例:

List lis=new List();
lis.Add(2);
lis.Add(5);
lis.Add(1);
lis.Add(4);
for(int i=0;i

2.自定义类的排序

错误代码示例:

class Test
{
  public int value;
   public Test(int value)
  {
     this.value=value;
  }
}

List test=new List();
test.Add(new Test(32));
test.Add(new Test(14));
test.Add(new Test(56));
test.Add(new Test(99));
test.Sort();
for(int i=0;i

正确代码示例:

class Test:IComparable //继承实现排序接口
{
   public int value;
   
   public Test
   {
      this.value=value;
   }

   public int CompateTo(Test other) //实现逻辑
  {
      //返回值的含义
      //小于0:放在传入对象的前面
      //大于0:放在传入对象的后面
     this.value>other.value?1:-1; //从小到大升序排序 
  }
}

List lis=new List();
lis.Add(new Test(23));
lis.Add(new Test(45));
lis.Add(new Test(11));
lis.Add(new Test(99));
lis.Add(new Test(78));
lis.Sort(); //调用排序方法

3.通过委托函数进行排序

代码示例:

List shop=new List();
shop.Add(new Shop(2));
shop.Add(new Shop(1));
shop.Add(new Shop(4));
shop.Add(new Shop(3));

shop.Sort(SortShop);

static int SortShop(Shop a,Shop b)
{
     //传入两个对象 为列表中的两个对象
    // 用左边的和右边的条件比较,将b看成之前坐标轴的0,规则和本文上方自定义比较一样
    //若反回值小于0,则a放在b的左边,否则a放在b的右边
   return a.id>b.id?-1:1; //这里进行降序排序 
}

//还有一种匿名函数写法
shop.Sort(delegate (Shop a,Shop b)
{
   return a.id>b.id?-1:1;  
});

你可能感兴趣的:(c#之List排序)