// Gen2 // iOb Gen<int>. iOb = new Gen2<int> (99);
// GetOb() Gen2.
Console.WriteLine(iOb.GetOb());
}
}
.
GetOb() Gen : 88 GetOb() Gen2 : 99
, GetOb () Gen2, Gen.
.
iOb = new Gen2<int>(99);
, iOb Gen<int>. , Gen<int> , Gen<int>, Gen2<int>. , iOb , , Gen2<int>, .
, , . . , , , , . , . , , . , , , .
.
// , // .
//
// , using System;
// , Set(), // , class Gen<T, V> {
obi;
V ob2;
//...
// // , public void Set(T ) { obi = ;
}
public void Set(V ) { f ob2 = o;
}
}
class AmbiguityDemo { static void Main() {
Gen<int, double> ok = new Gencint, double>();
Gen<int, int> notOK = new Gencint, int>();
ok.Set(10); // ,
notOK.Set(10); // , !
}
}
. , Gen : V. Gen Set () V, .
|
|
public void Set (T ) { obi = ;
}
public void Set(V o) { ob2 = o;
}
, V . .
Gen V. , , Gen , .
Gencint, int> notOK = new Gencint, int>();
, V, int. Set () , , , . , Set () notOK Main () .
, , . , , , , . . , .
15 . - #, . C# 4.0 , . , , , , .NET Framework. , , , . , , . .
, , , . . , . out, .
, . IMyCoVarGenlF, .
// , public interface IMyCoVarGenlFCout > {
GetObject();
}
, . out. out , . , GetOb j ect () , .
|
|
, IMyCoVarGenlF . MyClass.
// IMyCoVarGenlF. class MyClass<T>: IMyCoVarGenIF<T> {
T obj;
public MyClass(T v) { obj = v; } public T GetObject() { return obj; }
}
, out , MyClass. , , out .