c#淺複製與深複製
淺複製
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class light : ICloneable
{
public int[] v ={ 1, 2, 3 };
public object clone()
{
return this.MemberwiseClone();
}
public void display()
{
foreach (int i in v)
{
Console.WriteLine(i);
}
}
#region ICloneable 成員
public object Clone()
{
throw new Exception("The method or operation is not implemented.");
}
#endregion
}
//客戶端
class Program
{
static void Main(string[] args)
{
light l1 = new light();
light l1copy = (light)l1.clone();
l1.v[0] = 8;
l1copy.display();
Console.ReadKey();
}
}
}
}
深複製
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
public class light : ICloneable
{
public int[] v ={ 1, 2, 3 };
//預設建構函式
public light()
{
}
//用於深複製與的私有建構函式
private light(int[] v)
{
this.v =(int[])v.Clone();
}
public void display()
{
foreach (int i in v)
{
Console.WriteLine(i);
}
}
#region ICloneable 成員
public object Clone()
{
return new light(this.v);//此呼叫了上述的私有建構函式
//throw new Exception("The method or operation is not implemented.");
}
#endregion
}
//客戶端
class Program
{
static void Main(string[] args)
{
light l1 = new light();//先產生原型物件
light l1copy = (light)l1.Clone();然後透過上述原型物件的clone方法會去呼叫私有建構函式進而複製l1為另一個新的物件
l1.v[0] = 8;
l1copy.display();
Console.ReadKey();
}
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-732313/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 淺複製和深複製的概念與值複製和指標複製(引用複製)有關 淺複製 “指標複製 深複製 值複製指標
- Java引用複製、淺複製、深複製Java
- JavaScript中的淺複製與深複製JavaScript
- C#中的物件深複製和淺複製C#物件
- JS物件複製:深複製和淺複製JS物件
- JavaScript 淺複製和深複製JavaScript
- go slice深複製和淺複製Go
- go的深複製跟淺複製Go
- python 淺複製、深複製坑Python
- python 深複製和淺複製Python
- js 淺拷貝(淺複製、淺克隆)、深拷貝(深複製、深克隆)JS
- 資料共享(淺複製)與資料獨立(深複製)
- 淺談JS中物件的淺複製和深複製JS物件
- 25. 深淺複製
- 淺顯直白的Python深複製與淺複製區別說明Python
- Day 7.5 資料型別總結 + 複製 淺複製 深複製資料型別
- 對於複製普通物件 深複製和淺複製是否一樣物件
- 詳談Javascript中的深複製和淺複製JavaScript
- python深複製和淺複製的區別Python
- js 實現深複製/深複製JS
- 設計模式-原型模式(Prototype)【重點:淺複製與深複製】設計模式原型
- Java中物件的深複製和淺複製詳解Java物件
- python 的深淺複製Python
- 淺複製、深複製與序列化【初級Java必需理解的概念】Java
- Java 中的深複製和淺複製你瞭解嗎?Java
- js 淺複製和深複製的區別和應用JS
- Python中的賦值與淺複製與深複製之間的關係Python賦值
- 【JavaScript】聊一聊js中的淺複製與深複製與手寫實現JavaScriptJS
- Python 列表切片陷阱:引用、複製與深複製Python
- Python列表的深淺複製Python
- js 深複製JS
- 一文帶你瞭解js資料儲存及深複製(深拷貝)與淺複製(淺拷貝)JS
- 深入理解JavaScript之深淺複製JavaScript
- python 深/淺複製及其區別Python
- 聊一聊web前端那些事兒,關於深複製和淺複製Web前端
- 整明白 Golang slice 宣告方式、淺複製現象、深複製、append操作GolangAPP
- js物件深複製JS物件
- 面試題分解—「淺複製/深複製、定義屬性使用copy還是strong ?」面試題