为什么C#(4.0)在通用类类型中不允许协变和矛盾?

为什么C#(4.0)在通用类类型中不允许协变和矛盾?,第1张

为什么C#(4.0)在通用类类型中不允许协变和矛盾?

首先,正如Tomas所说,CLR不支持它。

第二,那将如何工作?假设你有

class C<out T>{ ... how are you planning on using T in here? ... }

T仅可用于输出位置。如您所述,该类不能有任何类型为T的字段,因为该字段可以写入。该类不能有任何采用T的方法,因为这些方法在逻辑上是可写的。假设您具有此功能-
您将如何利用它?

如果我们可以说拥有一个类型T的只读字段,这对于不可变的类将很有用。这样,我们将大大减少不正确写入的可能性。但是很难提出其他允许以类型安全的方式进行变化的方案。

如果您有这种情况,我很乐意看到。这将指向有一天在CLR中实现这一点。

更新:请参阅

为什么C#4.0中的类没有通用差异?

有关此问题的更多信息。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4898578.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-12
下一篇 2022-11-12

发表评论

登录后才能评论

评论列表(0条)

保存