C 值型別和引用型別的測試

2022-10-11 00:36:12 字數 1583 閱讀 3785

using

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

using

system.threading.tasks;

namespace

值型別和引用型別

class

testclass1

//////

結構體

/// struct

teststruct

internal

class

program

;testclass c2 = c1;//

c1給了c2 ,這裡注定了c1和c2 無論後面用哪乙個都是唯一的位址

//無論是改變c1或者c2 都會改變引用位址的值,這個位址是這個物件的唯一

c2.id = 1; c2.name = "a"

; c1.id = 123; c1.name = "

abc"

; c1.lint = new list();

c1.lint.add(

12);

//這時輸出的時最後一次賦值的資訊,無論時c1還是c2他們都是乙個位址

console.writeline($"

c1[,]");

console.writeline($

"c2[,]");

testclass1 testclass1 = new

testclass1();

//把c1的所有變數賦值給testclass

//值型別的賦值

testclass1.id = c1.id; testclass1.name =c1.name;

//引用型別的賦值

testclass1.lint =c1.lint;

//當我們在賦值後更改值

c1.id = 777; c1.name = "

aaa"

; c1.lint[

0]=199

;

//列印就會出現只有testclass1.lint[0]的值有變化,其他的值型別無變化

console.writeline($"

testclass1[,,]");

//測試值型別

teststruct s1 = new teststruct ;

teststruct s2 = s1;//

s1給了s2

s2.id = 2; s2.name = "b"

; console.writeline($

"s1[,]");

console.readkey();}}

//output

//c1[123, abc]

//c2[123, abc]

//testclass1[123, abc, 199]

//s1[0, 未定義]

}

C 值型別和引用型別

c 資料型別 值型別,引用型別 概念 值型別直接儲存其值,引用型別儲存對值的引用 這兩種型別儲存在記憶體的不同地方 值型別儲存在堆疊中,引用型別儲存在託管堆上。乙個引用型別的例子,如圖 上圖中,只有乙個user物件,u1和u2都指向包含該物件的記憶體位置 執行結果 在c 中,基本資料型別如bool和...

c 值型別和引用型別

今天我們來學習一下什麼是值型別和引用型別。1.值型別的值存在棧上,引用型別棧上存的是位址,值在堆上 2.將乙個值型別變數賦給另乙個值型別變數時,將複製包含的值。引用型別變數的賦值只複製對物件的引用,而不複製物件本身。3.裝箱是將值型別轉換為引用型別,拆箱是將引用型別轉換為值型別,利用裝箱和拆箱功能,...

C 值型別和引用型別

型別被分為兩種 值型別 整數,bool,struct 建構函式 char 字元 小數 引用型別 string 陣列 自定義的類,內建的類,物件.兩者在記憶體中的儲存方式 值型別 只需要一段單獨的記憶體,用於儲存實際的資料,單獨定義的時候放在棧中 引用型別 需要兩段記憶體 第一段儲存實際的資料,它總是...