5 public delegate int IntDelegate (int x);
6 public delegate T[] TDelegate<T> ();
9 public int intFunction (int x) {
13 public IntDelegate getIntDelegate () {
17 public virtual int virtIntFunction (int x) {
21 public IntDelegate getVirtIntDelegate () {
22 return virtIntFunction;
25 public T[] tFunction () {
29 public TDelegate<T> getTDelegate () {
33 public static T[] staticTFunction () {
37 public TDelegate<T> getStaticTDelegate () {
38 return staticTFunction;
43 public static int Main () {
44 Gen<ClassA> ga = new Gen<ClassA> ();
45 IntDelegate id = ga.getIntDelegate ();
46 TDelegate<ClassA> tda = ga.getTDelegate ();
47 IntDelegate vid = ga.getVirtIntDelegate ();
48 TDelegate<ClassA> stda = ga.getStaticTDelegate ();
52 if (tda ().GetType () != typeof (ClassA[]))
56 if (stda ().GetType () != typeof (ClassA[]))
59 tda = (TDelegate<ClassA>)Delegate.CreateDelegate (typeof (TDelegate<ClassA>),
60 typeof (Gen<ClassA>).GetMethod ("staticTFunction"));
62 if (tda ().GetType () != typeof (ClassA[]))