7 static bool checkArr<S> (Array arr, int length) {
8 if (arr.GetType () != typeof (S[]))
10 if (arr.Length != length)
16 return checkArr<ClassB> (newArr<ClassB> (), myLength ());
19 public virtual int myLength () {
23 public virtual S[] newArr<S> () {
28 public class GenSub<T> : Gen<T> {
29 public override int myLength () {
33 public override S[] newArr<S> () {
38 public class GenSubSub : GenSub<ClassA> {
39 public override int myLength () {
43 public override S[] newArr<S> () {
49 public static int Main () {
50 Gen<ClassA> ga = new Gen<ClassA> ();
51 Gen<ClassA> gsa = new GenSub<ClassA> ();
52 Gen<ClassA> gss = new GenSubSub ();