在定义协变和逆变泛型类型时,我经常忘记是否必须使用in或out 。在java中,我有助记符PECS(生产者扩展消费者超级)来帮助我。你知道 c# 的类似助记符吗?
问问题
426 次
3 回答
3
当他们称它们为“输入”和“输出”而不是协变和逆变时,他们不是为我们这样做了吗?试想一下:我是在推动价值观“进来”,还是让他们“出去”?如果不确定,请尝试“out”——它更常见(也更容易理解)。
于 2010-08-27T16:29:39.247 回答
1
in
类型被传递in
给函数;out
类型是out
从函数返回的。
于 2010-08-27T17:28:25.090 回答
0
当我不记得时,我总是参考IEnumerable<out T>
(这意味着我当然必须记住那个接口的签名......)。您只能从 an 中获取 T “out”的实例IEnumerable<out T>
,因此它是协变的。如果您只能将 T "in" 的实例传递给接口(或委托,这更常见),那么它是逆变的。
于 2010-08-27T17:04:47.237 回答