Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 如何制作我的列表的深度副本 Dim i=2 做正确的事 i+=1 如果IsDBNull(TmDataSet.T.Rows(0)(i))=True,则退出Do 使新列车变暗 new_t.id=TmDataSet.t.Rows(0)(i) 尺寸j=0 直到IsDBNull(TmDataSet.T.Rows(j+1)(i))为止 j+=1 直到(TmDataSet.T.Rows(j)(i)-1) j+=1 环 如果是IsDBNull(TmDataSet.T.Rows(j+1)(i)),则退出Do 将新街变暗为新站 new_st.t=TmDataSet.t.Rows(j)(i) new_st.name=TmDataSet.T.Rows(j)(1) new_st.id=TmDataSet.T.Rows(j)(2) new_st.id_t=new_st.id.ToString和new_st.t 将新的st2变暗为新的车站 直到(TmDataSet.T.Rows(j+1)(i)-1) j+=1 环 new_st2.t=TmDataSet.t.Rows(j+1)(i) new_st2.name=TmDataSet.T.Rows(j+1)(1) new_st2.id=TmDataSet.T.Rows(j+1)(2) new_st2.id_t=new_st2.id.ToString和new_st2.t Dim列表作为新列表(车站) 列表。添加(新建) 列表.添加(新的\u st2) 新地址(列表) 环 每个网络。添加(新) 环_Vb.net_List - Fatal编程技术网

Vb.net 如何制作我的列表的深度副本 Dim i=2 做正确的事 i+=1 如果IsDBNull(TmDataSet.T.Rows(0)(i))=True,则退出Do 使新列车变暗 new_t.id=TmDataSet.t.Rows(0)(i) 尺寸j=0 直到IsDBNull(TmDataSet.T.Rows(j+1)(i))为止 j+=1 直到(TmDataSet.T.Rows(j)(i)-1) j+=1 环 如果是IsDBNull(TmDataSet.T.Rows(j+1)(i)),则退出Do 将新街变暗为新站 new_st.t=TmDataSet.t.Rows(j)(i) new_st.name=TmDataSet.T.Rows(j)(1) new_st.id=TmDataSet.T.Rows(j)(2) new_st.id_t=new_st.id.ToString和new_st.t 将新的st2变暗为新的车站 直到(TmDataSet.T.Rows(j+1)(i)-1) j+=1 环 new_st2.t=TmDataSet.t.Rows(j+1)(i) new_st2.name=TmDataSet.T.Rows(j+1)(1) new_st2.id=TmDataSet.T.Rows(j+1)(2) new_st2.id_t=new_st2.id.ToString和new_st2.t Dim列表作为新列表(车站) 列表。添加(新建) 列表.添加(新的\u st2) 新地址(列表) 环 每个网络。添加(新) 环

Vb.net 如何制作我的列表的深度副本 Dim i=2 做正确的事 i+=1 如果IsDBNull(TmDataSet.T.Rows(0)(i))=True,则退出Do 使新列车变暗 new_t.id=TmDataSet.t.Rows(0)(i) 尺寸j=0 直到IsDBNull(TmDataSet.T.Rows(j+1)(i))为止 j+=1 直到(TmDataSet.T.Rows(j)(i)-1) j+=1 环 如果是IsDBNull(TmDataSet.T.Rows(j+1)(i)),则退出Do 将新街变暗为新站 new_st.t=TmDataSet.t.Rows(j)(i) new_st.name=TmDataSet.T.Rows(j)(1) new_st.id=TmDataSet.T.Rows(j)(2) new_st.id_t=new_st.id.ToString和new_st.t 将新的st2变暗为新的车站 直到(TmDataSet.T.Rows(j+1)(i)-1) j+=1 环 new_st2.t=TmDataSet.t.Rows(j+1)(i) new_st2.name=TmDataSet.T.Rows(j+1)(1) new_st2.id=TmDataSet.T.Rows(j+1)(2) new_st2.id_t=new_st2.id.ToString和new_st2.t Dim列表作为新列表(车站) 列表。添加(新建) 列表.添加(新的\u st2) 新地址(列表) 环 每个网络。添加(新) 环,vb.net,list,Vb.net,List,'网络=每个网络的深度副本 vb>>>我只想将per_network的内容复制到网络,我尝试了ToList方法,但它是浅层复制,无法执行克隆方法。我根本没有得到它。您可以创建一个扩展方法,在该方法中序列化对象,然后再次反序列化它。这将使用它自己的引用创建一个新对象,从而创建一个深度副本 Dim i = 2 Do While True i += 1 If IsDBNull(TmDataSet.T.Rows(0)(i)) = True Then Exit D

'网络=每个网络的深度副本


vb>>>我只想将per_network的内容复制到网络,我尝试了ToList方法,但它是浅层复制,无法执行克隆方法。我根本没有得到它。

您可以创建一个扩展方法,在该方法中序列化对象,然后再次反序列化它。这将使用它自己的引用创建一个新对象,从而创建一个深度副本

 Dim i = 2
    Do While True
        i += 1
        If IsDBNull(TmDataSet.T.Rows(0)(i)) = True Then Exit Do
        Dim new_t As New train
        new_t.id = TmDataSet.T.Rows(0)(i)
        Dim j = 0
        Do Until IsDBNull(TmDataSet.T.Rows(j + 1)(i))
            j += 1
            Do Until (TmDataSet.T.Rows(j)(i) <> -1)
                j += 1
            Loop
            If IsDBNull(TmDataSet.T.Rows(j + 1)(i)) Then Exit Do
            Dim new_st As New station
            new_st.t = TmDataSet.T.Rows(j)(i)
            new_st.name = TmDataSet.T.Rows(j)(1)
            new_st.id = TmDataSet.T.Rows(j)(2)
            new_st.id_t = new_st.id.ToString & new_st.t
            Dim new_st2 As New station
            Do Until (TmDataSet.T.Rows(j + 1)(i) <> -1)
                j += 1
            Loop
            new_st2.t = TmDataSet.T.Rows(j + 1)(i)
            new_st2.name = TmDataSet.T.Rows(j + 1)(1)
            new_st2.id = TmDataSet.T.Rows(j + 1)(2)
            new_st2.id_t = new_st2.id.ToString & new_st2.t

            Dim list As New List(Of station)
            list.Add(new_st)
            list.Add(new_st2)
            new_t.st.Add(list)
        Loop
        per_network.Add(new_t)
    Loop
编辑:

以上是我的代码所需的导入:

Dim network As List(Of train) = per_network.DeepCopy()

这是我使用的代码

Imports System.IO
Imports System.Runtime.Serialization.Formatters.Binary
基本上,deepCopies是_dictOfBalances1.Keys的深度副本

如果deepCopies是浅拷贝,则此代码将不起作用

Dim deepCopies = _dictOfBalances1.Keys.ToList

顺便说一下,我不知道你是否看过,但我终于回答了你的另一个问题。我为这么长时间的等待表示歉意。@VisualEvent非常感谢您和您的努力,我找不到合适的词对您说我现在就检查它,我真的很感激这不是我考虑过的一个选项。@jmchilinney:您的也很好,可能占用的内存更少。唯一的另一个区别是我的可以执行任何类型的深度复制。:)@程序集“TDSP,版本=1.0.0.0,区域性=中性,PublicKeyToken=null”中的VisualIncent错误类型“WindowsApplication1.train”未标记为可序列化。@AlKobtan:按如下方式编写类声明:
公共类train
@AlKobtan:很高兴听到这个消息。请按帖子左侧的复选标记,将我的答案标记为已接受。:)
Dim deepCopies = _dictOfBalances1.Keys.ToList
For Each code In deepCopies
    If allthecoincode.Contains(code) Then
    Else
        _dictOfBalances1.Remove(code)
        'deletedKeys.Add(code)
    End If
Next