3 public abstract class A
<T
>
5 public abstract G Foo
<G
> () where G
: T
;
7 public virtual G Foo2
<G
> () where G
: T
13 public class B
: A
<int?>
15 public override G Foo
<G
> ()
20 public override G Foo2
<G
> ()
22 return base.Foo2
<G
> ();
28 public abstract void Foo
<U
> () where U
: struct, T
;
31 class B2
: A2
<System
.ValueType
>
33 public override void Foo
<Y
> ()
40 public abstract void Foo
<U
> () where U
: class, T
;
43 class B3
: A3
<System
.Object
>
45 public override void Foo
<Y
> ()
52 public static int Main ()
55 if (b
.Foo
<int?> () == null)