3

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

4

3 回答 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 回答