, AlphaRef: Alpha #1 , AlphaRef: Beta #1
, AlphaRef MyClass<Beta> , IMyCoVarGenlF. , out IMyCoVarGenlF . , .
. , , .
public interface IMyCoVarGenIF2<out >: IMyCoVarGenIF<T> {
//...
}
, out . , . : IMyCoVarGenIF2. ,
IMyCoVarGetlF. , IMyCoVarGenIF2 .
. , . , out , . . . , .
public interface IMyCoVarGenIF2<out > {
void M<V>() where V:T; // , T
//
}
-. , , , . . , . - in, .
, . IMyContraVarGenlF . , Show ().
// , . public interface IMyContraVarGenIF<in > { void Show(T obj);
}
, in, . , obj Show ().
IMyContraVarGenlF MyClass, .
// IMyContraVarGenlF. class MyClass<T> IMyContraVarGenIF<T> {
public void Show(T x) { Console.WriteLine(x); }
}
Show () , ToString () WriteLine ().