有人可以解释这种通用语法吗?

时间:2012-09-06 10:33:01

标签: c# generics delegates action

我已经对此做了一些谷歌并且没有找到任何解释语法的东西..

所以我将Action<T>用于生产者消费者,其中Action<T>是要执行的消费者操作。我右键点击Action<T> - “转到定义”以查看其定义,这就是我所展示的内容

public delegate void Action<in T>(T obj);

嗯......我一直在使用仿制药已经有一段时间了,并且从未使用过或看过<in T>的语法

任何人都有一个很好的总结来解释语法及其产生的结果?

感谢。 d

1 个答案:

答案 0 :(得分:1)

在C#4.0中引入了泛型类型的inout方差修饰符,以允许与泛型类型的co和contra方差。

  

对于通用类型参数, in 关键字指定类型参数为逆变

     

对于通用类型参数, out 关键字指定类型参数为协变


来自MSDN上的Variance in Generic Interfaces (C# and Visual Basic)

  

协方差允许方法具有比接口的泛型类型参数定义的更多派生返回类型。

     

Contravariance允许方法使参数类型的派生类型少于接口泛型参数指定的参数类型。