[英]Why is this an invalid variance?
我正在嘗試構建的確切代碼:
public interface IMapContainer<out T> where T : MapRoomBase
{
String GetName();
IEnumerable<T> GetRooms();
}
我收到此錯誤:方差無效:類型參數“T”必須在“MapLibrary.IMapContainer.GetRooms()”上無效。 'T'是協變的。
我認為這是有效的,因為IEnumerable只返回項目,並且不能添加任何項目。 為什么這不安全+有效?
確保您沒有定位舊的框架版本。 IEnumerable<T>
是從.NET 4開始協變的。您的代碼在.NET 4下編譯得很好,並且在.NET 3.5上提到的錯誤就失敗了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.