c#自定义泛型类的实现
程序员文章站
2023-12-19 09:04:04
闲来无事,自己研究了泛型类的简单的使用,where表示泛型约束,表示泛型类型中的参数只能是car类型,ienumerable是一个接口,一个集合要支持foreach遍历,必...
闲来无事,自己研究了泛型类的简单的使用,
where表示泛型约束,表示泛型类型中的参数只能是car类型,ienumerable是一个接口,一个集合要支持foreach遍历,
必须实现ienumerable接口
public class car
{
public string petname;
public int speed;
public car(string name, int currentspeed)
{
petname = name;
speed = currentspeed;
}
public car() { }
}
public class carcollection<t> : ienumerable<t> where t : car
{
private list<t> tcars = new list<t>();
//添加
public void addcar(t t)
{
tcars.add(t);
}
//获取其中一个
public t getcar(int pos)
{
return tcars[pos];
}
public int count()
{
return tcars.count;
}
#region ienumerable<t> 成员
public ienumerator<t> getenumerator()
{
return tcars.getenumerator();
}
#endregion
#region ienumerable 成员
system.collections.ienumerator system.collections.ienumerable.getenumerator()
{
return tcars.getenumerator();
}
#endregion
}
private void button1_click(object sender, eventargs e)
{
car car1 = new car("one", 150);
car car2= new car("two", 50);
car car3 = new car("three", 150);
carcollection<car> cars = new carcollection<car>();
cars.addcar(car1);
cars.addcar(car2);
cars.addcar(car3);
messagebox.show(cars.count().tostring());
foreach (car item in cars)
{
messagebox.show(item.petname+"--"+item.speed.tostring());
}
}
where表示泛型约束,表示泛型类型中的参数只能是car类型,ienumerable是一个接口,一个集合要支持foreach遍历,
必须实现ienumerable接口
复制代码 代码如下:
public class car
{
public string petname;
public int speed;
public car(string name, int currentspeed)
{
petname = name;
speed = currentspeed;
}
public car() { }
}
public class carcollection<t> : ienumerable<t> where t : car
{
private list<t> tcars = new list<t>();
//添加
public void addcar(t t)
{
tcars.add(t);
}
//获取其中一个
public t getcar(int pos)
{
return tcars[pos];
}
public int count()
{
return tcars.count;
}
#region ienumerable<t> 成员
public ienumerator<t> getenumerator()
{
return tcars.getenumerator();
}
#endregion
#region ienumerable 成员
system.collections.ienumerator system.collections.ienumerable.getenumerator()
{
return tcars.getenumerator();
}
#endregion
}
复制代码 代码如下:
private void button1_click(object sender, eventargs e)
{
car car1 = new car("one", 150);
car car2= new car("two", 50);
car car3 = new car("three", 150);
carcollection<car> cars = new carcollection<car>();
cars.addcar(car1);
cars.addcar(car2);
cars.addcar(car3);
messagebox.show(cars.count().tostring());
foreach (car item in cars)
{
messagebox.show(item.petname+"--"+item.speed.tostring());
}
}