C 小知識點記錄,物件的深拷貝

2022-01-30 09:46:47 字數 997 閱讀 5763

1

public

static

string

compareexchange(

2ref

string

location1,

3string

value,

4string

comparand

5 )

用locationl與comparand進行比較,如果相等,那麼locationl的值就是value的值;如果不等locationl的值就不變。函式等同於一下函式(簡單模擬):

1

static

string compareexchange(ref

string location1, string value, string

comparand)27

return

value;

8 }

示例:

1

string s1 = "

123";2

string s2 = "

456";3

string s3 = "

123";4

string s4 = interlocked.compareexchange(ref

s1, s2, s3); //如果s1等於s3,那麼就s2的值賦給s1,表示式的值是s2的值。

5console.writeline(s1);

6 console.writeline(s4);

輸出:

下面是乙個有趣而又使用的方法,利用序列化對乙個物件進行深拷貝

1

public

static

object deelclone(object original) //

利用序列化建立物件的深拷貝

221 }

C 知識點 物件深拷貝和淺拷貝

一 概念及原理 物件拷貝的目的是進行物件的複製,也就是將乙個物件裡面的資料完整的複製到乙個新的相同型別的物件中。由於物件中資料的儲存針對不同的資料型別儲存方式的不同,從而導致出現兩種資料拷貝的情況。c 中資料分為值型別和引用型別,對於值型別直接存的對應的值,再複製過程中直接複製對應值即可。對於引用型...

小知識點記錄

需兩行 一同使用 met percentage.setclickable false met percentage.setenabled false 時間戳轉換成不同時區的時間可能並不是同一天,所以如果要保證轉換時區是北京的話,需要設定時區為 gmt 8 yyyy mm dd eeee 其中eeee...

c 小知識點記錄 string

c 小知識點記錄 字元判斷 isupper 是否為大寫字母 islower 是否為小寫字母 toupper 轉化為大寫字母 a toupper a 如果沒有賦值給a,a不會改變 tolower 轉化為小寫字母 isalpha 是否為字母 isalnum 是否為數字或者字母!isdigit 是否為數字...