gpt4 book ai didi

c# - 协变/逆变是否适用于不实现公共(public)接口(interface)的隐式可转换类型?

转载 作者:太空狗 更新时间:2023-10-29 20:35:04 25 4
gpt4 key购买 nike

我目前正在阅读 C# 中的协变和逆变。

所有示例都包含可转换对象的详细信息,并且由于接口(interface)实现的准确性而有所不同,例如

在哪里Circle : IShape

协方差:SomeType<Circle> as SomeType<IShape>
逆变:SomeType<IShape> as SomeType<Circle>


如果TypeATypeB每个人都有一个 implicit converter编写为转换为其他类型,但不实现任何公共(public)接口(interface),在处理这些类型的泛型转换时谈论协变/逆变是否仍然正确?或者这是一个不同的概念?

最佳答案

不同的概念。 out 意义上的协变(或通过 in 实现的逆变)始终保持引用不变,根本没有任何转换 - 只是其他(可证明的)术语中的相同引用。这也是它不适用于实现接口(interface)的结构的原因,因为框不是引用保留的。相同的引用保留逻辑适用于引用类型数组的协变分配。

关于c# - 协变/逆变是否适用于不实现公共(public)接口(interface)的隐式可转换类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6749336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com