微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

泛型 – MonoTouch和支持变体通用接口

以下示例在常规Mono 2.10.9中编译正常:
namespace covarianttest
{
    public interface ITest<out T> : IEnumerable<T>
    {
    }
}

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

错误CS1961:协变类型参数’T’必须在’covarianttest.ITest’上不变地有效

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

解决方法

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

当前版本的MonoTouch附带了smcs编译器和基于2.1的配置文件(主要是Silverlight和一些.NET 4.0新增功能).

较新的功能,如协方差,需要一个完整的4.0编译器(例如Mono 2.10中的dmcs或Mono 3.0中的mcs)和运行时.

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐