- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
(我会自己检查一下,但我还没有 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/
在我的设置中,我试图有一个界面 Table继承自 Map (因为它主要用作 map 的包装器)。两个类继承自 Table - 本地和全局。全局的将有一个可变的映射,而本地的将有一个只有本地条目的映射。
Rust Nomicon 有 an entire section on variance除了关于 Box 的这一小节,我或多或少地理解了这一点和 Vec在 T 上(共同)变体. Box and Vec
我是一名优秀的程序员,十分优秀!