C#泛型浅谈(浅~)自定义类型数组的排序

<strong>//1:</strong>
//先定义2个属性存书名书编号,这里有2中属性的使用方式=-=

 private int id;
        private string name;
     public  int Id
        {
            get{return id ;}
            set { id = value; }
        }
       public string Name
       {
           get { return name; }
           set { name = value; }
       }
       public  Book() { 
       
       }
     public    Book(int Id,string name) { 
        
            this.Id =Id ;
            this.name = name;
            
        }

在一个类中定义的属性;可以控制能否set;

还有另一种

   public  int Id
        {
            get;
            set;
       }
       public string Name
       {    get;
            set;
}
       public  Book() { 
       
       }
     public    Book(int Id,string name) { 
        
            this.Id =Id ;
            this.name = name;
            
        }

 不需要写内部的get,set的详情; 

要写就必须再定义变量;

2:

为了使得一个排序可以排自定义类型的数组

比如我们的Book类

我们定义一个接口(在进行数组内元素的比较时< 、>是不能使用的因为我们的是泛型数组)

  public interface IComparable{
      int CompareTo(object obj);
    }
定义在类外部;

并且使Book类继承这个接口

 class Book:IComparable

{

//并在其中实现IComparable接口

  public int CompareTo(object obj)
        {
            Book tt =(Book )obj ;
            return this.Id. CompareTo (tt.Id );
        }


}

要排序当然还有一个排序类

   class SortFunc<T> where T :IComparable   //接口类型的约束,只有约束了才能比较
    { 
    public void  bubblesort(T []array){
        for (int i = 0; i < array .Length-1 ; i++)
        {
            for (int j = 0; j < array .Length-1 ; j++)
            {
                if (array[j].CompareTo(array[j + 1])>0) {
                    T temp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = temp;
                }
            }
        }
    }
    }

这个类也继承和Book同一个接口,可以使用CompareTo方法比较,array[j].CompareTo(array[j+1])返回一个-1或1

调用排序

   static void Main(string[] args)
        {
            Book[]ArrayBook=new Book [3];
            Book book1 = new Book(546546,"ww");
            Book book2 = new Book(2321, "ww");
            Book book3 = new Book(66, "ww");
            ArrayBook[0] = book1;
            ArrayBook[1] = book2;
            ArrayBook[2] = book3;
            SortFunc<Book> sort = new SortFunc<Book>();
            sort.bubblesort(ArrayBook);
            foreach (Book  item in ArrayBook)
            {
                Console .WriteLine ("www"+item.Id +"...."+item.Name );
            }
            Console.ReadKey();

        }
=-=码完了。。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值