2014-12-03 80 views
0

VB.NET 2012 我創建了一個foo的部分列表,它在構建之後將保持靜態,然後是第二個Foo列表,它將始終包含部分列表中的所有內容。我的問題是...什麼是將一個列表複製到另一個列表的快速或最快的方式?有更快的方法,沒有循環?

參見方法CombineClass1在vb.net中複製List(Of T)Class的最快方法是什麼?

Option Explicit On 
Option Strict On 
Public Class Form1 
    Private _initFoo As New Class1() 
    Private _postFoo As New Class1() 

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load 
     _initFoo.Init() 
     _postFoo.Combine(_initFoo, _postFoo) ' ** 
    End Sub 
End Class 


Option Explicit On 
Option Strict On 
Public Class Class1 
    Private FooLst As New List(Of Foo) 

    Public Class Foo 
     Public Property Item1 As String 
     Public Property Item2 As String 
    End Class 

    Public Sub Init() 
     FooLst.Add(New Class1.Foo With {.Item1 = "1", .Item2 = "A"}) 
     FooLst.Add(New Class1.Foo With {.Item1 = "2", .Item2 = "B"}) 
    End Sub 

    Public Sub Combine(readFrom As Class1, writeTo As Class1) ' ** 
     ' Is there a faster or way to copy one list to the other? 
     ' possibly without looping though each item in the readFrom list? 
     For Each f As Foo In readFrom.FooLst 
      writeTo.FooLst.Add(New Foo With {.Item1 = f.Item1, .Item2 = f.Item2}) 
     Next 
    End Sub 
End Class 
+3

您是否確實需要克隆物品?請注意,即使您使用的代碼在* your *源中沒有循環,* something *也會在某處循環。 – 2014-12-03 18:44:45

+2

你在複製 - 製作新的Foos - 不會將現有的複製到新列表中。那是你的意圖嗎? – Plutonix 2014-12-03 18:44:50

+1

我沒有看到圍繞循環的方法,您需要每個列表中的單獨實例。如果你不這樣做,那麼最快的方法可能是使用'List '構造函數。 – 2014-12-03 18:45:36

回答

5

可以使用的AddRange一個列表的內容添加到現有列表:

list1.AddRange(list2) 

這增加了列表2的內容列表1,保留原列表1中的項目。

+0

這一切都在一條線上,更容易閱讀,看起來像循環一樣快,所以謝謝! – Rose 2014-12-03 20:42:06

相關問題