我试图编译MSDN中的协变/反变化示例(https://msdn.microsoft.com/en-us/library/ee207183.aspx)。单变量编译异常
的问题是,我得到了两个错误:
Example1.cs(22,39):
错误CS0266:可以输入无法隐式转换
System.Collections.Generic.IEnumerable<string>
到System.Collections.Generic.IEnumerable<object>
。 的显式转换存在(是否缺少强制转换?)
Example1.cs(40,36):
错误CS0029:无法隐式转换类型
System.Action<object>
到System.Action<string>
我可以通过强制转换来解决第一个问题:'IEnumerable objects =(IEnumerable)strings'',但我不确定如何解决第二个问题。基本上,我不知道为什么我从编译MSDN代码中得到错误。
我使用mono Mono C# compiler version 3.12.0.0
进行编译。什么可能是错的?
我觉得这与[Liskov的Substituion原理](http://en.wikipedia.org/wiki/Liskov_substitution_principle)和/或事实'IEnumerable'不是来自'IEnumerable
此功能与C#4,.NET 4.0一起添加,并会在以前的版本中产生这些错误。您的Mono是否瞄准4.0或更早版本的功能? – 2015-02-06 22:43:37