簡體   English   中英

為什么這是一個無效的方差?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM