确切的代码我试图建立:这是一个无效的差异?
public interface IMapContainer<out T> where T : MapRoomBase
{
String GetName();
IEnumerable<T> GetRooms();
}
我得到这个错误: 无效方差:类型参数“T”必须是“MapLibrary.IMapContainer.GetRooms()”目不暇接有效。 'T'是协变的。
我的印象是,这将是有效的,因为IEnumerable只是返回项目,并且都不能添加。为什么这不安全+有效?
对不起,但为什么'出T'?你需要那个'出'吗? – 2012-08-13 19:37:39
为什么T从界面输出参数?你想达到什么目的?从我的角度来看,这看起来奇怪/错误。 – 2012-08-13 19:39:49
@ Xtian,Andre,http://msdn.microsoft.com/en-us/library/dd997386.aspx。 – 2012-08-13 19:44:31