6

私が構築しようとしている正確なコード:

    public interface IMapContainer<out T> where T : MapRoomBase
    {
        String GetName();

        IEnumerable<T> GetRooms();
    }

次のエラーが表示されます: 無効な分散: 型パラメーター 'T' は、'MapLibrary.IMapContainer.GetRooms()' で不変的に有効である必要があります。「T」は共変です。

IEnumerable は単純にアイテムを返し、何も追加できないため、これは有効であるという印象を受けました。これが安全で有効でないのはなぜですか?

4

1 に答える 1

7

古いフレームワーク バージョンをターゲットにしていないことを確認してください。IEnumerable<T>コードは.NET 4で正常にコンパイルされ、.NET 3.5で言及したエラーで失敗します。

于 2012-08-13T19:41:00.060 に答える