usingsystem;
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 陣列 自定義的類,內建的類,物件.兩者在記憶體中的儲存方式 值型別 只需要一段單獨的記憶體,用於儲存實際的資料,單獨定義的時候放在棧中 引用型別 需要兩段記憶體 第一段儲存實際的資料,它總是...