C#泛型类型的助记符

时间:2010-08-27 16:15:09

标签: c# generics covariance contravariance mnemonics

我经常忘记在定义covarient和contravarient泛型类型时是否必须使用inout。在java中我有助记符PECS(生产者扩展消费者超级)来帮助我。你知道c#的类似助记符吗?

3 个答案:

答案 0 :(得分:3)

当他们称他们为'in'和'out'而不是covariant和contravariant时,他们不是这样做的吗?试想一下:我是在推动价值观,还是让它们“消失”?如果不确定,请尝试“退出” - 它更常见(也更容易理解)。

答案 1 :(得分:1)

in个类型将in传递给函数; out类型从函数返回out

答案 2 :(得分:0)

当我不记得时,我总是提到IEnumerable<out T>(这当然意味着我必须记住该界面的签名......)。您只能获得IEnumerable<out T>的T“out”实例,因此它是协变的。如果你只能将T“in”的实例传递给一个接口(或者委托,这是更常见的),它就是逆变的。