6

以下示例在常规 Mono 2.10.9 中编译良好:

namespace covarianttest
{
    public interface ITest<out T> : IEnumerable<T>
    {
    }
}

但是,当我尝试针对 MonoTouch 6.0.8 编译它时,我收到此错误:

错误 CS1961:协变类型参数“T”必须在“covarianttest.ITest”上始终有效

那么我是否假设 MonoTouch 不支持扩展协变/逆变通用接口呢?如果是这样,对于 MonoTouch 中的这种情况,推荐的解决方法是什么?

4

1 回答 1

6

这实际上取决于编译器(和配置文件/运行时)而不是 Mono 版本。IOW 有些事情可能适用于 Mono 2.10 而不适用于 MonoTouch 6.x。

当前版本的 MonoTouch 附带smcs编译器和基于 2.1 的配置文件(主要是 Silverlight 和一些 .NET 4.0 添加)。

较新的特性,如协方差,需要完整的 4.0 编译器(例如dmcs在 Mono 2.10 或mcsMono 3.0 中)和运行时。

MonoTouch 的未来版本(可能在今年春天在 2013 年初推出 alpha/beta)将提供 4.0/4.5 运行时和编译器。

于 2012-12-30T18:36:16.827 回答