自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C#值類(lèi)型賦值與引用類(lèi)型的賦值

開(kāi)發(fā) 后端
C#編程中,大家會(huì)經(jīng)常使用到不同的數(shù)據(jù)類(lèi)型。本文介紹的是C#值類(lèi)型賦值與引用類(lèi)型的賦值,希望對(duì)你有幫助,一起來(lái)看。

C#中,數(shù)據(jù)類(lèi)型大致可以分為兩類(lèi),一類(lèi)是值類(lèi)型,一類(lèi)是引用類(lèi)型。初學(xué)者往往會(huì)被類(lèi)型之間的相互賦值搞的很迷惑,尤其是引用類(lèi)型變量的相互賦值。

現(xiàn)在舉2個(gè)例子,來(lái)一一說(shuō)明。

值類(lèi)型變量的賦值: 值類(lèi)型變量中保存的是實(shí)際數(shù)據(jù),在賦值的時(shí)候只是把數(shù)據(jù)復(fù)制一份,然后賦給另一個(gè)變量。

例子1:

 

  1. int var1=2;  
  2. int var2=var1; //編譯器會(huì)先復(fù)制var1的值,然后把它賦給var2.很明顯var2的值也為2  

 

引用類(lèi)型變量的賦值: 引用類(lèi)型變量中保存的是“指向?qū)嶋H數(shù)據(jù)的引用指針”。在進(jìn)行賦值操作的時(shí)候,它和值類(lèi)型一樣,也是先有一個(gè)復(fù)制的操作,不過(guò)它復(fù)制的不是實(shí)際的數(shù)據(jù),而是引用(真實(shí)數(shù)據(jù)的內(nèi)存地址)。

所以引用類(lèi)型的變量在賦值的時(shí)候,賦給另一變量的實(shí)際上是內(nèi)存地址。這樣賦值完成后,2個(gè)引用變量中保存的是同一引用,他們的指向完全一樣。

例子2:

 

  1. class MyClass   
  2. {  
  3. public int val;  
  4. }  
  5. struct MyStruct  
  6. {  
  7. public int val;  
  8. }  
  9. class Program  
  10. {  
  11. static void Main(string[] args)  
  12. {  
  13. MyClass objectA=new MyClass();  
  14. MyClass objectB=objectA; //引用變量的賦值 賦值操作完成后,兩個(gè)變量都指向同一內(nèi)存地址  
  15. objectA.val=10; //給objectA.val賦值=10 由于objectB和objectA指向同一內(nèi)存地址,所以ojbectB.val的值也為10  
  16. objectB.val=20; //給objectB.val賦值=20 由于objectB和objectA指向同一內(nèi)存地址,所以objectA.val的值也為20  
  17. MyStruct structA=new MyStruct();  
  18. MyStruct structB=structA; //結(jié)構(gòu)是值類(lèi)型 賦值操作完成后,兩個(gè)結(jié)構(gòu)中的結(jié)構(gòu)信息一致。注意是“結(jié)構(gòu)中的信息”一致。  
  19. structA.val=30;  
  20. structA.val=40;  
  21. Console.WriteLine(objectA.val); //輸出結(jié)果是20  
  22. Console.WriteLine(objectB.val); //輸出結(jié)果是20  
  23. Console.WriteLine(structA.val); //輸出結(jié)果是30  
  24. Console.WriteLine(structB.val); //輸出結(jié)果是40  
  25. Console.ReadLine();  
  26. }  

 

從上面2個(gè)例子可以看出,值類(lèi)型變量的賦值操作,僅僅是2個(gè)實(shí)際數(shù)據(jù)之間的復(fù)制。而引用類(lèi)型變量的賦值操作,復(fù)制的是引用,即內(nèi)存地址,由于賦值后二者都指向同一內(nèi)存地址,所以改變其中一個(gè),另一個(gè)也會(huì)跟著改變,二者就像綁定在了一起。

【編輯推薦】

  1. c#.net實(shí)體類(lèi)序列化方法
  2. 用C#實(shí)現(xiàn)HTTP協(xié)議下的多線程文件傳輸
  3. 解析C#委托、時(shí)間和Lambda表達(dá)式
  4. C#中的閉包是怎么捕獲變量的
  5. C#控件的閃爍問(wèn)題解決方法總結(jié)
責(zé)任編輯:于鐵 來(lái)源: 博客園
相關(guān)推薦

2013-05-23 17:21:16

C#

2009-08-19 16:39:44

C#值類(lèi)型C#引用類(lèi)型

2009-08-26 14:05:19

C#值類(lèi)型和引用類(lèi)型

2009-10-22 18:41:49

CLR VIA C#教

2009-08-14 17:09:48

C#引用類(lèi)型

2009-08-27 16:39:26

C# String類(lèi)型

2009-08-31 14:34:46

C#值類(lèi)型C#結(jié)構(gòu)類(lèi)型

2009-09-11 11:09:36

C#引用類(lèi)型

2009-08-03 17:51:43

C#引用類(lèi)型

2009-09-11 11:17:04

C#引用類(lèi)型

2009-08-06 10:14:15

C#引用類(lèi)型數(shù)組

2009-09-03 16:55:58

C#引用類(lèi)型

2009-08-24 13:52:04

C# 泛型約束

2009-08-03 14:54:23

值類(lèi)型C#

2009-08-25 17:52:01

C#可空值類(lèi)型

2009-10-10 09:53:07

.NET值類(lèi)型

2024-03-12 10:25:14

C#Dictionary編程語(yǔ)言

2009-08-12 15:02:49

C#賦值運(yùn)算符簡(jiǎn)單賦值運(yùn)算符

2009-08-12 15:20:18

C#賦值運(yùn)算符復(fù)合賦值運(yùn)算符

2009-08-10 17:25:58

C#匿名類(lèi)型
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)