C 值型別賦值與引用型別的賦值

2021-06-09 04:30:06 字數 637 閱讀 9619

在c#中,資料型別大致可以分為兩類,一類是值型別,一類是引用型別。初學者往往會被型別之間的相互賦值搞的很迷惑,尤其是引用型別變數的相互賦值。

現在舉2個例子,來一一說明。

值型別變數的賦值: 值型別變數中儲存的是實際資料,在賦值的時候只是把資料複製乙份,然後賦給另乙個變數。

例子1:

int var1=2;

int var2=var1;  //編譯器會先複製var1的值,然後把它賦給var2.很明顯var2的值也為2 

引用型別變數的賦值:  引用型別變數中儲存的是「指向實際資料的引用指標」。在進行賦值操作的時候,它和值型別一樣,也是先有乙個複製的操作,不過它複製的不是實際的資料,而是引用(真實資料的記憶體位址)。所以引用型別的變數在賦值的時候,賦給另一變數的實際上是記憶體位址。這樣賦值完成後,2個引用變數中儲存的是同一引用,他們的指向完全一樣。

例子2:

class myclass             

struct mystruct

class program

}從上面2個例子可以看出,值型別變數的賦值操作,僅僅是2個實際資料之間的複製。而引用型別變數的賦值操作,複製的是引用,即記憶體位址,由於賦值後二者都指向同一記憶體位址,所以改變其中乙個,另乙個也會跟著改變,二者就像繫結在了一起。

C 值型別賦值與引用型別的賦值

c 程式設計中,大家會經常使用到不同的資料型別,那麼 程式語言到底有什麼型別呢?具體如下 1 值型別 各種值型別總是含有相應該型別的乙個值。c 迫使你初始化變數才能使用它們進行計算 變數沒有初始化不會出問題,因為當你企圖使用它們時,編譯器會告訴你。每當把乙個值賦給乙個值型別時,該值實際上被拷貝了。相...

01 基本型別的賦值與引用型別賦值的區別

var a 10 var b a console.log a的值是 a console.log b的值是 b 總結 基本型別的賦值 是把變數a的值 賦值乙份給b var obj1 var obj2 obj1 obj2.name 李四 console.log obj1的物件是 obj1 obj1的物件...

C 值型別和引用型別(未賦值的區域性變數)

引言 這部分內容還是很重要的,那麼是什麼讓我對值和引用型別著迷呢?我們先來看一下例子 這個是我們當時在討論設計模式的時候看到的,你們可以想想,為什麼會宣告null?直接宣告 expression expression 不行嗎?如果直接宣告 expression expression 會出現什麼情況?...