淺拷貝在專案中的應用

2021-09-22 13:42:54 字數 1671 閱讀 6323

有一些概念我們清楚,但在實際中不知道如何去用,這往往是c#初學者的乙個共同的問題,今天我來講的就是「淺表拷貝」,簡單來說就是把乙個物件,一模一樣的複製出來乙份來,但淺表拷貝只複製原物件的引用位址,在改變新物件時,原來物件不會改變,而深表拷貝是完全拷貝,在改變新物件時,原物件也會受到影響

以下是淺表拷貝的實現,利用了memberwiseclone方法

class people

public string email

public people shallowcopy()

}class program

;people p2 = p1.shallowcopy();

console.writeline(p1.name);

console.writeline(p2.name);

console.readkey();}}

我對深拷貝進行了封裝,如果是深拷貝也類似這樣去做

#region 物件的深拷貝
//對於 class的物件和陣列,會copy位址乙份。[從而改變b時,a也被改變了],它為淺表拷貝
//而對於其它內建的int/string/enum/struct/object型別,則進行值copy,它為深表拷貝
///
/// 警告列舉
/// 

public

enum warn

///
/// 泛型類
/// 

/// 

/// 

public

class compare: icloneable where t1 : class

catch (exception)
}
#region icloneable members
public

object clone()

#endregion
}
#endregion
ok,現在我有乙個people物件,希望得到乙個與people物件實現p1完全相同的物件p2,如何去做,如果是去new乙個people物件也是可以的,但這在開發時間的浪費是可想而知的,要把所有屬性抄寫一遍,現在我們可以用封裝好的深拷貝來實現。

#region 淺拷貝
people p1 = new people ;
people p2 = new people();
comparec = new compare();
c.copyentity(p1, ref p2);
console.writeline(p1.name + p1.email);
console.writeline(p2.name + p2.email);
#endregion
ok, 從輸出結果看這兩個物件是相同的。

淺拷貝在專案中的應用

淺拷貝在專案中的應用

有一些概念我們清楚,但在實際中不知道如何去用,這往往是c 初學者的乙個共同的問題,今天我來講的就是 淺表拷貝 簡單來說就是把乙個物件,一模一樣的複製出來乙份來,但淺表拷貝只複製原物件的引用位址,在改變新物件時,原來物件不會改變,而深表拷貝是完全拷貝,在改變新物件時,原物件也會受到影響。以下是淺表拷貝...

gradle在專案中的應用

compilesdkversion 代表是使用的sdk版本buildtoolsversion 代表構建工具的版本,一般都是sdk相配套的。在專案建立的時候就會自動生成signingconfigs 簽名配置,主要有 develop,release develop 開發時候的配置keyalias apk...

Kibana在專案中的應用

雖然本文主要闡釋kibana 在專案中的應用 但是我們需要了解乙個常識,那就是一般情況下elk都是組合應用的,在我們的專案中我們也是一起使用的,但是由於對kibana 的頗具熱情,所以本文是對kibana的初始 先說下專案背景,我是datawarehouse 的 免不了會對些個datastage j...