c# - 为什么这是一个无效的方差?

标签 c# silverlight-4.0 covariance

我正在尝试构建的确切代码:

    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 上提到的错误而失败。

关于c# - 为什么这是一个无效的方差?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11941080/

相关文章:

c# - 获取抛出异常的方法名

c# - 通过操作/命令在数据上下文中设置属性

c# - Windows Phone 7-C#如何在代码中使用ListPickerItem而不会崩溃?

c# - 使用字典和泛型创建嵌套的 JSON 可序列化对象结构时,.NET 中的 C# 协方差存在问题

matlab - 从OpenCV Expectation Max中的协方差矩阵计算方差

c# - 结果类型协变 - 方法返回接口(interface)类型和特定类型的泛型类

c# - USB HID col参数是什么

c# - Azure 502错误..尝试新的WebBrowser()和/或image.Save()

xaml - 使用 StrokeDashArray 的均匀间隔破折号

javascript - 覆盖浏览器的 CTRL+F 并将其替换为 Silverlight 自定义搜索