有關序列化實現引用物件深度複製的幾種方法 !

2021-05-07 13:40:02 字數 456 閱讀 3858

對於一般情況而言,為了解決引用型別的值物件複製可以巧妙的使用序列化來實現,但是如果牽扯的成員中有一些諸如畫刷等系統程式集裡的未加序列化特性標識的物件,就很難解決 !

//集合深度複製

public object clone(object myitem)

}  

///

/// 把物件序列化並返回相應的位元組

///

/// 需要序列化的物件

/// byte

public byte serializeobject(object pobj)

}///

/// 把位元組反序列化成相應的物件

///

/// 位元組流

/// object

public object deserializeobject(byte pbytes)

return obj;

}

使用序列化和反序列化機制深度複製物件

由於值型別和引用型別在賦值上的不同。在clone乙個物件的引用型別的成員時,一般只是簡單的賦值對物件的引用。此時原有的物件和新賦值的物件會同時引用同乙個成員物件。這種物件clone的方法一般稱為淺賦值或淺表複製。在大多數情況下淺賦值並不是我們希望的clone方式。為了實現深度複製,我們就必須遍歷有相...

物件序列化 反序列化

必須新增引用 using system.io using system.runtime.serialization using system.runtime.serialization.formatters.binary 方法 region 物件序列化 物件序列化 任意物件 字串 public st...

物件 序列化 反序列化

public class eventmessage 資訊提示類 型別1 操作日誌2 安全日誌 標題 內容 icon型別 url 執行script指令碼字串 需加 public static void messagebox int m type,string m title,string m body...