IComparable

public class Program
    {
       static void Main(String[] args)
        {
            var myInt = new[] { 20, 4, 5, 1, 6 };
            Array.Sort(myInt);
            foreach (var i in myInt)
                Console.WriteLine("{0}", i);
            Console.ReadLine();

        }
    }
/*
Array类的sort方法其实依靠一个叫做IComparable的接口!
public interface IComparable
{
    int CompareTo(object obj);
}

sort 使用的算法依赖于元素的CompareTo方法来决定两个元素的次序。int类型实现了IComparable!*/

class Program
    {
        static void Main(string[] args)
        {int i,j,t;
         var myInt = new[] { 20, 4, 5, 1, 6};
         for (i = 0; i <myInt.Length-1; i++)
          for (j = 0; j < myInt.Length - 1-i; j++)
              if (myInt[j].CompareTo(myInt[j + 1]) > 0)//myInt[j].CompareTo(myInt[j+1])<0则为降序排序,正好相反的!
            {  t=myInt[j];
               myInt[j] = myInt[j+1];
               myInt[j + 1] = t;

            }
         for (i = 0; i <myInt.Length; i++)
             Console.WriteLine("{0}", myInt[i]);
         Console.ReadLine();

        }
    }
时间: 2024-11-09 14:43:27

IComparable的相关文章

IComparable和IComparer

using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace no._1 { class Program { static void Main(string[] args) { ArrayList arr1 = new ArrayList() { new P

对象的比较与排序:IComparable和IComparer接口

IComparable和ICompare 接口是.net framework 中比较对象的标准方式,这两个接口提供一个返回值类似(大于0 等于0 小于0)的比较方法,二者区别如下: 1. IComparable 在要比较的对象的类中实现,可以比较该对象和另一个对象. 2. IComparer 在一个单独的类中实现,可以比较任意两个对象. 先看 IComparable 这个接口方法是 int CompareTo(object obj); 方法只有一个参数,我们知道比较至少要有两个对象,所以这个方法

C# IComparable接口、IComparer接口和CompareTo(Object x)方法、Compare()方法

在项目中经常会用到字符串比较,但是有时候对字符串的操作比较多,规则各异.比如有的地方我们需要用排序规则,有的地方需要忽略大小写,我们该如何写一个比较容易操作的比较方法呢?重新实现IComparer接口不失为一个好办法. IComparable.CompareTo 方法 在MSDN上是这么解释(机器翻译过来)的: IComparable接口:定义一种特定于类型的通用比较方法,值类型或类通过实现此方法对其实例进行排序. IComparer接口:公开一种比较两个对象的方法. 详细理解就是: 在默认情况

C#基础---IComparable用法,实现List&lt;T&gt;.sort()排序

List<T>.sort()可以实现对T的排序,比如List<int>.sort()执行后集合会按照int从小到大排序.如果T是一个自定义的Object,可是我们想按照自己的方式来排序,那该怎么办呢,其实可以用过IComparable接口重写CompareTo方法来实现.流程如下: 一.第一步我们申明一个类Person但是要继承IComparable接口: using System; using System.Collections.Generic; using System.Li

IComparable和IComparer接口的简析

默认情况下,对象的Equals(object o)方法是比较两个对象是否引用同一个对象.如果我们有自己的对象,就要自己定义对象比较方式: 1.IComparable在要比较的对象(类的实例化就是对象)类中实现,可以比较该对象和另一个对象. 2.IComparer在一个单独的类中实现,可以任意比较两个对象. 通俗的讲,IComparable是能够比较,具备比较的能力.比如说某个人具备编程的能力,如果需要对编程能力的高低进行比较的话,就必须在自己的类中去实现怎么具体的方法.IComparer是比较者

实现比较器接口IComparable&lt;T&gt;,让自定义类型数组也能排序

using System; namespace LinqDemo1 { class Program { static void Main(string[] args) { Person[] persons = { new Person {FirstName = "Damon", LastName = "Hill"}, new Person {FirstName = "Niki", LastName = "Lauda"}, ne

C# 常用接口学习 IComparable 和 IComparer

作者:乌龙哈里 时间:2015-11-01 平台:Window7 64bit,Visual Studio Community 2015 参考: Microsoft Refernce Souce MSDN 章节: 接口 IConmparable 实现 接口 IComparable<T> 实现 接口 IComparer<T> 实现 正文: 一.接口 IConmparable 的实现 class Fruit {     public string Name;     public int

Comparer&lt;T&gt; IComparer&lt;T&gt; IComparable&lt;T&gt;

Comparer<T>.Default Property Comparer<T>.Default doesn't use your FooComparer class. It simply returns an instance of the internal class GenericComparer<T>.This class has the constraint that T must implement IComparable<T> so it ca

比较和排序 IComparable And IComparer

1.List<Student>默认排序 为类创建默认排序实现IComparable,此代码的实现为年龄升序 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace IComparable_And_IComparer.Model { /// <summary> /// 学生类 /// <