> On Wednesday, September 29, 2010 10:18:17 Pelle wrote: > > On 09/29/2010 05:53 PM, Jesse Phillips wrote: > > > The only benefit, which should be solve in another manner is having this > > > code work: > > > > > > class A {} > > > class B:A {} > > > > > > class Container(T) {} > > > > > > void main() { > > > > > > Container!(A) a = new Container!(B)(); > > > > > > } > > > > Sorry for falling off topic, but that code shouldn't work. > > > > a.insert(new A)
I will first quote Wikipedia about C#[1]: "For example, in C# 3.0 generic parameters did not support co or contravariance; List<A> was not equivalent to List<TypeDerivedFromTypeA> as one might intuit; however, this is now supported in C# 4.0, though standard arrays have always supported covariance & contravariance since .NET was introduced." Then I will show an example that does compile[2]: void main() { A[] = [new B(), new A()]; } 1. http://en.wikipedia.org/wiki/Covariance_and_contravariance_(computer_science) 2. http://ideone.com/ZzDTs