C# 中结构体的复制

Posted Thomas会写字

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 中结构体的复制相关的知识,希望对你有一定的参考价值。

复制的几种情况

  1. 地址复制
  2. 浅表字段复制(复制字段及地址块的地址,并不复制地址块内容,内容仍旧引用从前部分)
  3. 深度完整复制,借用C#序列化功能。

 速度方面,逐渐变慢

第一种:

struct a = struct b

第二种:

struct Person

    Person Copy()
    
        Person other = (Person)this.MemberwiseClone();
    

第三种

[Serializable]
struct Person

    Person Clone()
    
        MemoryStream memoryStream = new MemoryStream();
        BinaryFormatter formatter = new BinaryFormatter();
        formatter.Serialize(memoryStream, this);
        memoryStream.Position = 0;
        return (Person)formatter.Deserialize(memoryStream);
    

以上是关于C# 中结构体的复制的主要内容,如果未能解决你的问题,请参考以下文章

C# 结构体的创建和使用

C#中类与结构体的区别

高难度问题,C#结构体的封送 的使用经验总结

《C#零基础入门之百识百例》(六十一)结构体的定义 -- 时间设计

《C#零基础入门之百识百例》(六十五)类和结构体的对比 -- 文字对战游戏

c语言如何实现结构体的深度复制