class 泛型
{
public static void Main()
{
//---------------测试泛型约束-------
//定义一个Pression数组
Pression[] pr = new Pression[] { new Pression("蚊子",12),
new Pression("栋冻", 10), new Pression("高高", 20)};
sort<Pression> ss = new sort<Pression>();//实例化一个排序类
ss.sortt(pr);//调用排序函数
foreach (Pression ppr in pr)
{//打印出排序后的序列
Console.WriteLine(ppr.ToString());
}
//----------测试泛型函数---------
int a = 5;
Console.WriteLine("a -->" + a);
int b = 9;
Console.WriteLine("b -->" + b + "/n");
pr[0].Swap<int>(ref a, ref b);
Console.WriteLine("a-->" + a);
Console.WriteLine("b-->" + b);
Console.Read();
}
}
//先来比较一下 一个类,实现了比较接口,这个类有两个字段
class Pression : IComparable<Pression>
{
//这里是泛型函数 交换x 和y
public void Swap<T>(ref T x, ref T y)
{
T tem;
tem = x;
x = y;
y = tem;
}
//--------------属性方法、构造函数---------------
private int year;
private string name;
public int Year
{
get { return year; }
set { year = value; }
}
public string Name
{
get { return name; }
set { name = value; }
}
public Pression(string _name, int _year)
{
this.Name = _name;
this.Year = _year;
}
public Pression() { }
//-------------------------------------
//------------实现比较的接口----------
#region IComparable<Pression> 成员
int IComparable<Pression>.CompareTo(Pression other)
{
return this.Year.CompareTo(other.Year);
}
#endregion
//----------重写了ToString方法---------
public override string ToString()
{
return "姓名:" + this.Name +
"*********年龄:" + this.Year;
}
}
//----排序的类,要求要排序的对象实现了比较的接口----
class sort<T> where T : IComparable<T>
{
public void sortt(T []t)
{//这里是一个冒泡排序法
for (int i = 0; i < t.Length-1; i++)
for (int j = i+1; j < t.Length; j++)
{
if (t[i].CompareTo(t[j]) == 1)
{
T tt = t[i];
t[i] = t[j];
t[j] = tt;
}
}
}
}