我写了下面的示例代码,反映了我的困境:
Private Enum myEnum As Byte
value_0 = 0
value_1 = 1
value_2 = 2
End Enum
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Dim objList_Bytes As New List(Of Byte)
objList_Bytes.Add(0)
objList_Bytes.Add(1)
objList_Bytes.Add(2)
Dim objList_enum As New List(Of myEnum)
objList_enum.AddRange(objList_Bytes)
End Sub
我在库存控制程序中保留Enums列表以跟踪诸如ItemType,MakeOrBuy等内容,并且这些枚举被声明为As Byte或者As Short。在不同的点,我需要将列表(字节)的内容添加到List(枚举(作为字节))。问题是,当我运行示例代码时,我收到此错误:
无法转换类型为'System.Collections.Generic.List 1[System.Byte]' to type 'System.Collections.Generic.IEnumerable
的对象1 [Windows_Forms_Application_x64_FormException_Project1.Form1 + myEnum]'。
有没有办法在我尝试时执行AddRange而无需为每个列表手动编写For循环,从而添加每个单独的项目?
...谢谢
答案 0 :(得分:0)
好的,结果我回答了我自己的问题。此代码效率稍低,但足够抽象以适用于许多场景:
Public Shared Sub List_ConvertLists_Boxed(Of SourceType, DestType)(ByVal objList_SrcItems As List(Of SourceType), ByRef return_objList_DstItems As List(Of DestType))
Dim z As Integer
For z = 0 To objList_SrcItems.Count - 1
return_objList_DstItems.Add(CObj(objList_SrcItems(z)))
Next z
End Sub