代码之家  ›  专栏  ›  技术社区  ›  vulkanino

VB.NET版ArrayList to List(Of T)typed copy/转换

  •  6
  • vulkanino  · 技术社区  · 15 年前

    我有一个第三方方法,它返回一个老式的ArrayList,我想把它转换成一个类型化的ArrayList(MyType)。

    Dim udc As ArrayList = ThirdPartyClass.GetValues()
    Dim udcT AS List(Of MyType) = ??
    

    Dim udcT As New List(Of MyType)
    While udc.GetEnumerator.MoveNext
        Dim e As MyType = DirectCast(udc.GetEnumerator.Current, MyType)
        udcT.Add(e)
    End While
    
    4 回复  |  直到 15 年前
        1
  •  19
  •   Mehrdad Afshari    15 年前
    Dim StronglyTypedList = OriginalArrayList.Cast(Of MyType)().ToList()
    ' requires `Imports System.Linq`
    
        2
  •  0
  •   Community CDub    8 年前

    In .Net, how do you convert an ArrayList to a strongly typed generic list without using a foreach?

    在VB.Net版使用框架<3.5:

    Dim arrayOfMyType() As MyType = DirectCast(al.ToArray(GetType(MyType)), MyType())
    Dim strongTypeList As New List(Of MyType)(arrayOfMyType)
    
        3
  •  0
  •   vulkanino    15 年前

    这个怎么样?

    Public Class Utility
    
        Public Shared Function ToTypedList(Of C As {ICollection(Of T), New}, T)(ByVal list As ArrayList) As C
    
            Dim typedList As New C
            For Each element As T In list
                typedList.Add(element)
            Next
    
            Return typedList
        End Function
    
    End Class
    

    如果对任何集合对象都有效。

        4
  •  0
  •   kingfrito_5005    10 年前