C# 集合复制行为问题
在c#中,在向集合添加对象后,是否始终创建另一个副本(深度副本)?否,如果它是类,则大多数对象都是,集合中只存储对同一对象的引用 如果它是一个值类型,如int、double和structs,则会创建一个副本(如果struct引用了一个类对象,而该类对象又不会被复制,则不是深度副本) 编辑:C# 集合复制行为问题,c#,.net,C#,.net,在c#中,在向集合添加对象后,是否始终创建另一个副本(深度副本)?否,如果它是类,则大多数对象都是,集合中只存储对同一对象的引用 如果它是一个值类型,如int、double和structs,则会创建一个副本(如果struct引用了一个类对象,而该类对象又不会被复制,则不是深度副本) 编辑: 要深度复制对象,首先需要创建深度复制功能。 看看或 然后,可以在将项目添加到集合之前运行深度复制方法 注意 你并不经常真的需要真正的深度拷贝。通常最好重新考虑应用程序中的数据流。不,如果它是类,则大多数对象都
要深度复制对象,首先需要创建深度复制功能。
看看或
然后,可以在将项目添加到集合之前运行深度复制方法 注意
你并不经常真的需要真正的深度拷贝。通常最好重新考虑应用程序中的数据流。不,如果它是类,则大多数对象都是类,集合中只存储对同一对象的引用 如果它是一个值类型,如int、double和structs,则会创建一个副本(如果struct引用了一个类对象,而该类对象又不会被复制,则不是深度副本) 编辑:
要深度复制对象,首先需要创建深度复制功能。
看看或
然后,可以在将项目添加到集合之前运行深度复制方法 注意
你并不经常真的需要真正的深度拷贝。通常,最好重新考虑应用程序中的数据流。如果您想了解集合发生了什么,那么这取决于: 通常,将使用一些“空”插槽创建集合,因此添加到集合中不会导致创建具有新大小的新集合 但是,如果添加新项目超出此大小,将创建一个新集合,并将所有项目复制到其中
如果您询问的是项目本身,这同样取决于:
如果是值类型(例如int、double、structs),则将复制该值;如果是引用类型,则将使用对同一对象引用的副本。如果您询问集合的情况,则取决于: 通常,将使用一些“空”插槽创建集合,因此添加到集合中不会导致创建具有新大小的新集合 但是,如果添加新项目超出此大小,将创建一个新集合,并将所有项目复制到其中
如果您询问的是项目本身,这同样取决于:
如果是值类型(例如int、double、structs),则将复制该值;如果是引用类型,则将使用对同一对象引用的副本。那么如何进行深度复制集合?那么如何进行深度复制集合?