Class carcollection <t>: ienumerable <t> where T: Car
{
// If you need to use foreach, you must implement ienumerable
// Where T: The car t must be a car or its subclass. If there is no where, there is no type restriction.
List <t> List = new list <t> ();
Public void add (T)
{
List. Add (t );
}
# Region ienumerable <t> Member
Public ienumerator <t> getenumerator ()
{
Return list. getenumerator ();
}
# Endregion
# Region ienumerable Member
System. Collections. ienumerator system. Collections. ienumerable. getenumerator ()
{
Return list. getenumerator ();
}
# Endregion
}
Class car
{
Public String petname;
Public int speed;
Public Car (string name, int currentspeed)
{
Petname = Name;
Speed = currentspeed;
}
Public Car (){}
}
Class trunckcar: Car
{
Public trunckcar (string name)
{
Petname = Name;
}
}
Main ()
{
Carcollection <car> cc = new carcollection <car> ();
Cc. Add (New trunckcar ("AAA "));
Cc. Add (new car ("AAA", 12 ));
Cc. Add (New trunckcar ("BBB "));
Foreach (car c in CC)
{
Console. writeline (C. petname );
}
}