最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#使用IComparer自定義List類實(shí)現(xiàn)排序的方法

 更新時(shí)間:2015年08月18日 17:11:53   作者:北風(fēng)其涼  
這篇文章主要介紹了C#使用IComparer自定義List類實(shí)現(xiàn)排序的方法,涉及C#使用IComparer接口定義List類進(jìn)行排序的相關(guān)技巧,需要的朋友可以參考下

本文實(shí)例講述了C#使用IComparer自定義List類實(shí)現(xiàn)排序的方法。分享給大家供大家參考。具體如下:

List類中不帶參數(shù)的Sort函數(shù)可以用來為List類中的元素排序,但如果List類中的元素類型本身不能直接進(jìn)行比較(如自定義的struct和很多class),或是希望采用更加靈活的自定義比較方式,可以通過繼承了IComparer接口的函數(shù)來解決。

代碼示例如下:

1)聲明一個(gè)類

/// <summary>
/// 人物類
/// </summary>
public class Person
{
  public string Name;
  public int Age;
  public override string ToString()
  {
    return "Name: " + Name + " Age: " + Age;
  }
}

2)聲明一個(gè)繼承了接口IComparer的類

/// <summary>
/// 比較人物類實(shí)例大小,實(shí)現(xiàn)接口IComparer
/// </summary>
public class PersonComparer : IComparer<Person>
{
  public int Compare(Person x, Person y)
  {
    if (x == null && y == null) return 0;
    if (x == null) return -1;
    if (y == null) return 1;
    //TODO:Person類實(shí)例X與Y的比較規(guī)則
    //按姓名由小到大排列,姓名相同的人年齡大的在前
    {
      int temp = string.Compare(x.Name, y.Name);
      if (temp > 0) return -1;
      else if (temp < 0) return 1;
      if (x.Age > y.Age) return 1;
      if (x.Age < y.Age) return -1;
    }
    return 0;
  }
}

3)Main函數(shù),建立一個(gè)List,并使用剛建立的PersonComparer類中的規(guī)則對(duì)List進(jìn)行排序

static void Main(string[] args)
{
  List<Person> a = new List<Person>();
  a.Add(new Person() { Name = "Tsybius", Age = 23 });
  a.Add(new Person() { Name = "Galatea", Age = 21 });
  a.Add(new Person() { Name = "Lucius", Age = 22 });
  a.Add(new Person() { Name = "Septimus", Age = 22 });
  a.Add(new Person() { Name = "Octavius", Age = 22 });
  a.Add(new Person() { Name = "Lucius", Age = 24 });
  //輸出a中全部元素
  Console.WriteLine("排序前");
  foreach (var v in a)
  {
    Console.WriteLine(v.ToString());
  }
  Console.WriteLine("-");
  //對(duì)a進(jìn)行排序
  a.Sort(new PersonComparer());
  //輸出a中全部元素
  Console.WriteLine("排序后");
  foreach (var v in a)
  {
    Console.WriteLine(v.ToString());
  }
  Console.WriteLine("-");
  Console.ReadLine();
}

4)程序運(yùn)行示例

希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評(píng)論

海南省| 遵义县| 仪征市| 永川市| 连州市| 化州市| 宿迁市| 崇州市| 靖州| 井冈山市| 怀安县| 富蕴县| 佛学| 安平县| 兖州市| 襄垣县| 垣曲县| 黄冈市| 岢岚县| 普兰县| 阳西县| 青浦区| 浦北县| 莱西市| 高清| 钟祥市| 当涂县| 交城县| 合山市| 南涧| 安龙县| 武强县| 淮滨县| 鹤峰县| 阿坝县| 哈密市| 集贤县| 呼玛县| 淮阳县| 石首市| 仪征市|