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

C#通過IComparable實現ListT.sort()排序

 更新時間:2014年09月24日 10:48:12   投稿:shichen2014  
這篇文章主要介紹了C#通過IComparable實現ListT.sort()排序的方法,可實現自定義的排序方法,是非常實用的技巧,需要的朋友可以參考下

本文實例講述了C#通過IComparable實現ListT.sort()排序的方法,分享給大家供大家參考之用。具體方法如下:

通常來說,List<T>.sort()可以實現對T的排序,比如List<int>.sort()執(zhí)行后集合會按照int從小到大排序。如果T是一個自定義的Object,可是我們想按照自己的方式來排序,那該怎么辦呢,其實可以用過IComparable接口重寫CompareTo方法來實現。流程如下:

一、第一步我們申明一個類Person但是要繼承IComparable接口:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace TestIComparable
{
  public class Person : IComparable<Person>
  {
    public string Name { get; set; }
 
    public int Age { get; set; }
 
    public int CompareTo(Person obj)
    {
      int result;
      if (this.Name == obj.Name && this.Age == obj.Age)
      {
        result = 0;
      }
      else
      {
        if (this.Name.CompareTo(obj.Name) > 0)
        {
          result = 1;
        }
        else if (this.Name == obj.Name && this.Age > obj.Age)
        {
          result = 1;
        }
        else
        {
          result = -1;
        }
      }
 
      return result;
    }
 
    public override string ToString()
    {
      return this.Name + "-" + this.Age;
    }
  }
}

二、然后在主函數里面調用sort方法即可.類就會按照姓名從小到大,如果姓名相同則按照年齡從小到大排序了。

public class Program
{
  public static void Main(string[] args)
  {
    List<Person> lstPerson = new List<Person>();
    lstPerson.Add(new Person(){ Name="Bob",Age=19});
    lstPerson.Add(new Person(){ Name="Mary",Age=18});
    lstPerson.Add(new Person() { Name = "Mary", Age = 17 });
    lstPerson.Add(new Person(){ Name="Lily",Age=20});
    lstPerson.Sort();
    Console.ReadKey();
  }
}

三、如果不繼承IComparable接口,我們該如何實現排序呢??梢允褂肔inq來實現。其實效果是一樣的,只是如果類的集合要經常排序的話,建議使用繼承接口的方法,這樣可以簡化sort的代碼,而且更容易讓人看懂。

public static void Main(string[] args)
{
  List<Person> lstPerson = new List<Person>();
  lstPerson.Add(new Person(){ Name="Bob",Age=19});
  lstPerson.Add(new Person(){ Name="Mary",Age=18});
  lstPerson.Add(new Person() { Name = "Mary", Age = 17 });
  lstPerson.Add(new Person(){ Name="Lily",Age=20});

  lstPerson.Sort((x,y) =>
  {
 int result;
 if (x.Name == y.Name && x.Age == y.Age)
 {
   result = 0;
 }
 else
 {
   if (x.Name.CompareTo(y.Name) > 0)
   {
 result = 1;
   }
   else if (x.Name == y.Name && x.Age > y.Age)
   {
 result = 1;
   }
   else
   {
 result = -1;
   }
 }

 return result;
  });
  Console.ReadKey();
}

希望本文所述對大家的C#程序設計有所幫助。

相關文章

  • C#實現在PDF文檔中應用多種不同字體

    C#實現在PDF文檔中應用多種不同字體

    在PDF文檔中,可繪制不同字體樣式、不同語言的文字,可通過使用Standard字體、TrueType字體、CJK字體或者自定義(私有)等字體類型。本文將具體介紹實現的方法,需要的可以參考一下
    2022-01-01
  • Unity實現車型識別的示例代碼

    Unity實現車型識別的示例代碼

    這篇文章主要介紹了在Unity中接入百度AI,實現檢測一張車輛圖片的具體車型。即對于輸入的一張圖片(可正常解碼,且長寬比適宜),輸出圖片的車輛品牌及型號。需要的可以參考一下
    2022-01-01
  • C#實現簡單合并word文檔的方法

    C#實現簡單合并word文檔的方法

    這篇文章主要介紹了C#實現簡單合并word文檔的方法,涉及C#針對word文檔的讀取、插入、保存等技巧,非常具有實用價值,需要的朋友可以參考下
    2015-09-09
  • WPF/Silverlight實現圖片局部放大的方法分析

    WPF/Silverlight實現圖片局部放大的方法分析

    這篇文章主要介紹了WPF/Silverlight實現圖片局部放大的方法,結合實例形式分析了WPF/Silverlight針對圖片屬性操作相關實現技巧,需要的朋友可以參考下
    2017-03-03
  • C#實現基于任務的異步編程模式

    C#實現基于任務的異步編程模式

    本文詳細講解了C#實現基于任務的異步編程模式,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • C#中屬性和成員變量的區(qū)別說明

    C#中屬性和成員變量的區(qū)別說明

    本篇文章主要是對C#中屬性和成員變量的區(qū)別進行了介紹說明。需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01
  • 深入解析C#中的泛型類與泛型接口

    深入解析C#中的泛型類與泛型接口

    這篇文章主要介紹了C#中的泛型類與泛型接口,對泛型的支持是C#語言的重要特性,需要的朋友可以參考下
    2016-02-02
  • C# Winform 禁止用戶調整ListView的列寬

    C# Winform 禁止用戶調整ListView的列寬

    在使用 ListView 的時候, 有時我們不想讓別人隨意調整列寬, 或者某幾列的列寬, 以便達到美觀, 或者隱藏數據的作用. 那么可以用一下代碼來實現
    2011-05-05
  • C#數組應用分析

    C#數組應用分析

    C#數組應用分析...
    2007-08-08
  • 基于C#實現宿舍管理系統(tǒng)

    基于C#實現宿舍管理系統(tǒng)

    這篇文章主要介紹了如何利用C#語言開發(fā)一個簡易的宿舍管理系統(tǒng),文中的實現步驟講解詳細,對我們學習C#有一定參考價值,感興趣的可以了解一下
    2022-06-06

最新評論

稷山县| 西丰县| 汉阴县| 济南市| 台东市| 吉水县| 苏尼特右旗| 枝江市| 桂林市| 分宜县| 即墨市| 陆河县| 襄城县| 宁国市| 寿宁县| 常山县| 收藏| 治多县| 临洮县| 泸定县| 德清县| 通化县| 镇安县| 扬州市| 边坝县| 临颍县| 邢台县| 宣恩县| 潞城市| 苍溪县| 勃利县| 洛隆县| 交城县| 衡阳县| 彰化市| 桐柏县| 安岳县| 科技| 涟水县| 日土县| 平泉县|