【问题标题】:Create Generic List from a subclass从子类创建通用列表
【发布时间】:2008-10-07 21:07:34
【问题描述】:
Option Explicit On
Option Strict On

Public Class Class1

    Dim l As List(Of A)

    Public Sub New()
        l = New List(Of B)
    End Sub

End Class

Public Class A
End Class

Public Class B
    Inherits A
End Class<p>

我遇到了这个问题。
我有一个声明为通用类型“A”的列表
我想将列表定义为通用类型“B”,它是“A”的子类。

为什么不能做到这一点,如何达到同样的效果?

【问题讨论】:

    标签: c# vb.net generics reflection


    【解决方案1】:

    这是一个方差问题,C# 不支持泛型。见Rick Byer's post on the subject

    【讨论】:

      【解决方案2】:

      如果您可以将 As 列表转换为 B 列表,那么如果添加 A 会发生什么?

      【讨论】:

      • 如果类 A 被用作通用类型,那么它应该作为添加的任何子类的接口。您应该能够使用 A 和 B 以及 B 中的任何方法/变量,如果您明确地转换它。
      • 虽然显然不是,但我会考虑这个问题。
      【解决方案3】:

      在 C# 4.0(昨天宣布)中,我们是 half way there

      【讨论】:

        猜你喜欢
        • 2014-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多