基本概念:
淺拷貝:指對象的字段被拷貝,而字段引用的對象不會被拷貝,拷貝對象和原對象僅僅是引用名稱有所不同,但是它們共用一份實體。對任何一個對象的改變,都會影響到另外一個對象。大部分的引用類型,實現的都是淺拷貝,引用類型對象之間的賦值,就是復制一個對象引用地址的副本,而指向的對象實例仍然是同一個。
深拷貝:指對象的子段被拷貝,同時字段引用的對象也進行了拷貝。深拷貝創建的是整個源對象的結構,拷貝對象和原對象相互獨立,不共享任何實例數據,修改一個對象不會影響到另一個對象。值類型之間的賦值操作,執行的就是深拷貝。
基本概念之參考代碼:
代碼如下:
class Program
{
static void Main(string[] args)
{
Student s1 = new Student("li", 23);
//淺拷貝
Student s2 = s1;
s2.Age = 27;
s1.ShowInfo();//li's age is 27
//深拷貝
int i = 12;
int j = i;
j = 22;
Console.WriteLine(i);//12
Console.Read();
}
}
class Student
{
public string Name;
public int Age;
public Student(string name, int age)
{
Name = name;
Age = age;
}
public void ShowInfo()
{
Console.WriteLine("{0}'s age is {1}", Name, Age);
}
}
分析:
在上例中,實例s2對s1進行了淺拷貝,對s2中的Age字段進行更改,繼而影響實例s1中的Age字段。
深拷貝中,僅僅是值類型間簡單的賦值,對“j”做出的更改不會更改“i”的值。
新聞熱點
疑難解答
圖片精選