.net - 如何正确复制/克隆结构?我应该改用类(class)吗?

标签 .net

假设我有那个

Structure myStruct
    Public myPoint As Point
    Public myBool As Boolean
End Structure

如何制作该结构的副本/克隆?

我现在解决了这个问题, 我使用的代码示例:

    Dim myStruct(1) As myStruct 
    myStruct(0).myPoint = New Point(10, 10)
    myStruct(0).myBool = True

    Dim myCopy(1) As myStruct
    myCopy = myStruct
    myCopy(0).myBool = False
    myCopy(0).myPoint = New Point(11, 11)

这样,两个变量都改变了

我不得不做

    myCopy = CType(myStruct.Clone, myStruct())

另一个问题,如果该结构被使用,比方说,10,000 次,我是否应该创建一个类来代替?

最佳答案

您正在查看每个结构 12 个字节,因此将它作为结构传递比在堆上创建对它的字大小的引用(换句话说,使用类)便宜

如果您需要一次访问所有 10,000 个,即使它们是结构,也会在堆上创建它们的数组。

复制结构就像创建声明另一个相同类型的结构并将第一个结构分配给第二个结构一样简单。

关于.net - 如何正确复制/克隆结构?我应该改用类(class)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/644861/

相关文章:

c# - 在 Workflow Foundation 中处理多个状态下的同一事件

c# - 使用 Lockbits 替换图像的颜色

.net - 为什么UdpClient.Receive需要ref参数?

.net - NET : Best Practices/guidelines for dividing namespaces between files?

c# - 使用 XmlDictionaryReader 从消息中获取值

c# - 如何写入另一个应用程序的标准输入?

c# - 通过 Google Apps 脚本 API (C#) 设置属性时身份验证失败

.net - 有人在 Visual Studio 2010 中使用 .NET 微框架吗?

C# 从列表框拖放到 TreeView

C# 4.0 允许项目不关心引用版本