Rod*_*ley 6 generics covariance contravariance xamarin.ios
以下示例在常规Mono 2.10.9中编译正常:
namespace covarianttest
{
public interface ITest<out T> : IEnumerable<T>
{
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试针对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编译器(例如,dmcs在Mono 2.10或mcsMono 3.0中)和运行时.
未来版本的MonoTouch(可能在今年春季推出alpha/beta于2013年初)将提供4.0/4.5运行时和编译器.
| 归档时间: |
|
| 查看次数: |
211 次 |
| 最近记录: |