大佬教程收集整理的这篇文章主要介绍了vb.net – 如何制作我的列表的深层副本,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
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
‘network = per_network的深层副本
vb>>>我只是想将per_network的内容复制到网络,我尝试过ToList方法,但它是浅拷贝而且无法执行克隆方法我根本没有得到它
Public Module Extensions <System.Runtime.Compilerservices.Extension()> _ Public Function DeepCopy(Of T)(ByVal Obj As T) As T If Obj.GetType().Isserializable = false Then Return Nothing Using MStream As New MemoryStream Dim Formatter As New BinaryFormatter Formatter.serialize(MStream,Obj) MStream.Position = 0 Return DirectCast(Formatter.Deserialize(MStream),T) End Using End Function End Module
现在你可以打电话:
Dim network As List(Of Train) = per_network.DeepCopy()
编辑:
这些是我上面代码的必需导入:
Imports System.IO Imports System.Runtime.serialization.Formatters.binary
以上是大佬教程为你收集整理的vb.net – 如何制作我的列表的深层副本全部内容,希望文章能够帮你解决vb.net – 如何制作我的列表的深层副本所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。