gpt4 book ai didi

c# - C# 4.0 元组是协变的吗

转载 作者:可可西里 更新时间:2023-11-01 08:38:24 24 4
gpt4 key购买 nike

(我会自己检查一下,但我还没有 VS2010(还))

假设我有 2 个基本接口(interface):

IBaseModelInterface
IBaseViewInterface

还有 2 个实现这些的接口(interface):

ISubModelInterface : IBaseModelInterface
ISubViewInterface : IBaseViewInterface

如果我定义一个 Tuple<IBaseModelInterface, IBaseViewInterface>我想根据返回 Tuple<ISubModelInterface, ISubViewInterface> 的工厂的结果来设置它.

在 C# 3 中,即使子接口(interface)实现了基接口(interface),我也不能这样做。如果我使用 IEnumerable<IBaseModelInterface>,我很确定 C# 4 允许我这样做因为它现在定义为 in允许协变的关键字。 Tuple也是如此允许我这样做吗?

据我所知(很少),协变只允许在接口(interface)上使用,所以这是否意味着需要有一个 ITuple<T1, T2>界面?这存在吗?

最佳答案

Tuple 是一个类(好吧,一个类族)——根据定义它是不变的。正如您稍后提到的,只有接口(interface)和委托(delegate)类型支持 .NET 4 中的泛型变体。

据我所知,没有ITuple 接口(interface)。可能有一个是协变的,因为元组是不可变的,所以您只能从 API“获取”值。

关于c# - C# 4.0 元组是协变的吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2872867/

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