Dar*_*rov 48
您可以阅读.NET 4.0中引入的泛型方差和逆变.该冲击in关键字的接口上是它宣称它作为逆变含义T只能被用作输入方法类型.您不能在此接口的方法上将其用作返回类型.这样做的好处是你可以做这样的事情(如上所述):
interface IProcessor<in T>
{
void Process(IEnumerable<T> ts);
}
List<Giraffe> giraffes = new List<Giraffe> { new Giraffe() };
List<Whale> whales = new List<Whale> { new Whale() };
IProcessor<IAnimal> animalProc = new Processor<IAnimal>();
IProcessor<Giraffe> giraffeProcessor = animalProc;
IProcessor<Whale> whaleProcessor = animalProc;
giraffeProcessor.Process(giraffes);
whaleProcessor.Process(whales);
Run Code Online (Sandbox Code Playgroud)
这表示一般的矛盾。相反是协方差(关键字out)。
这意味着,当接口为反变量(in)时,当类型参数继承T时,可以将接口隐式转换为泛型。
相反,对于协方差out,可以将接口隐式转换为泛型类型,其中类型参数是类型层次结构中的“较小”类型。
| 归档时间: |
|
| 查看次数: |
10334 次 |
| 最近记录: |