最近在看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;
}
}
}
}
{
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);
}
}
{
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 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,相信难不倒你的。基础的东西真的很重要。想复习的朋友就跟我一步一步来复习吧。