c#基础(1) 理解泛型

最近在看jimmyzhang的文章,把自己所想到的东西记录下来,权当笔记。

首先说一下泛型的好处:极大的减少了重复代码,使我们的程序更加清爽,泛型类相当于一个模板,可以在需要时为这个模板传入我们想要的类型。

首先我们需要看一个 C#实现一个比较简单的冒泡排序

        public void maopao(int[] array)
        {
            
int length = array.Length;
            
for (int i = 0; i <length; i++)
            {
                
for (int j = i + 1; j < length; j++)
                {
                   
                    
if (array[i]>array[j])
                    {
                        
int temp = array[i];
                        array[i] 
= array[j];
                        array[j] 
= temp;

                    }
                }
            }
        }

好,我们很容易的就实现了对整型数组的冒泡排序,如果某一天我们想实现对string[]数组的排序呢?相信大家已经想到了,再复制一遍代码 把参数类型改成string

,那么很好,这个要求我们也很容易的实现了,如果说还有其他类型呢?所以这里就需要泛型了。刚才我们针对的都是简单类型,现在我们引入一个类book,为了方便我们就给它2个属性 id  title,并实现了 icomparable接口的compareto方法

public class book : IComparable
    {
        
public book() { }


        
private int id;
        
private string title;


        
public book(int id, string title)
        {
            
this.id = id;
            
this.title = title;
        }

        
public int Id
        {
            
get { return id; }
            
set { id = value; }

        }

        
public string Title
        {
            
get
            {
                
return title;
            }
            
set
            {
                title 
= value;
            }
        }

        
public int CompareTo(object obj)
        {
            book book2 
= (book)obj;
            
return this.id.CompareTo(book2.id);
        }
    }

然后我们在main里面 创建一个book的实例  然后 给book数组赋值

            book[] bookarray = new book[2];
            book book1 = new book(123"测试书籍1");//创建book1  book2实例
            book book2 = new book(456"测试书籍2");
            bookarray[
0= book1;//赋值
            bookarray[1= book2;
            jisuan myjisuan 
= new jisuan();
            myjisuan.maopao(bookarray);
            
foreach (book bk1 in bookarray)
            {
                Console.WriteLine(bk1.Id 
+ "" + bk1.Title);
                
            }
            Console.Read();

到此  我们简单的接触了泛型,其实在book里 我们也可以实现一个 泛型接口 然后 用List.sort()方法进行比较。有兴趣的朋友可以MSDN,相信难不倒你的。基础的东西真的很重要。想复习的朋友就跟我一步一步来复习吧。

原文地址:https://www.cnblogs.com/danyingjie/p/1965598.html