Limitations of Custom Generic Collections
Currently, the CarCollection class does not buy you much beyond uniquely named public
methods. Furthermore, an object user could create an instance of CarCollection and specify a
completely unrelated type parameter:
// This is syntactically correct, but confusing at best!
CarCollection myInts = new CarCollection();
myInts.AddCar(5);
myInts.AddCar(11);
foreach (int i in myInts)
{
Console.WriteLine("Int value: {0}", i);
}
So, why does the compiler allow such code? Well, remember that generics are, in fact, generic. A
type parameter can be anything whatsoever, even if it completely makes no sense within the con-
text of the generic type (e.g., a car collection holding integers).
To illustrate another form of generics abuse, assume that you have now created two new
classes (SportsCar and MiniVan) that derive from the Car type:
public class SportsCar : Car
{
public SportsCar(string p, int s)
: base(p, s){}
Do'stlaringiz bilan baham: |