VB.NET ArrayList to List(Of T)类型的复制/转换

vul*_*ino 6 vb.net type-conversion

我有一个返回旧式ArrayList的第三方方法,我想将其转换为类型化的ArrayList(Of MyType).

Dim udc As ArrayList = ThirdPartyClass.GetValues()
Dim udcT AS List(Of MyType) = ??
Run Code Online (Sandbox Code Playgroud)

我做了一个简单的循环,但必须有一个更好的方法:

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
Run Code Online (Sandbox Code Playgroud)

Meh*_*ari 19

Dim StronglyTypedList = OriginalArrayList.Cast(Of MyType)().ToList()
' requires `Imports System.Linq`
Run Code Online (Sandbox Code Playgroud)

  • @vul除非你没有首先引用System.Core程序集,否则不要"包含"Linq是不合理的.它只是一堆C#功能的名称.这是一个简单的C#方法,并不是一个有很大开销的东西.您也可以使用`System.Linq.Enumerable.ToList(System.Linq.Enumerable.Cast(Of MyType)(OriginalArrayList))直接调用该方法. (2认同)