国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#編程自學之數據類型和變量二

2019-10-29 21:37:29
字體:
來源:轉載
供稿:網友

這篇文章繼續介紹了C#數據類型和變量,是對上一篇文章的補充,希望對大家的學習有所幫助。

我們繼續自學C#編程教程,在上一課中介紹了C#的基本數據類型以及變量,今天這一節課我們來介紹值類型與引用類型!

一、什么是值類型與引用類型?

C#與大多數面向對象語言數據類型一樣,分為值類型與引用類型兩種?如何區分這兩種類型?如圖:

C#編程自學之數據類型和變量二

根據類型結構圖我們得出:

1.值類型包括 內置數據類型如(int double float) 用戶自定義值類型(struct 結構體) 枚舉(emun)

2.引用類型包括 接口類型 類類型等等。

知道了那些類型屬于值類型與那些類型屬于引用類型之后,我們來分析一下值類型與引用類型的區別分別是什么?

首先繼續看圖:

C#編程自學之數據類型和變量二

根據上圖我們可以看出,我們計算機內存可以分為堆(.NET中是托管堆)和棧兩個區域!理解了這個后我們來看值類型和引用類型的區別:

1.值類型:值類型如 int double float 等這些基礎數據類型,實際的值都是分配在棧上!

2.引用類型: 引用類型如 object 等這些數據類型,實際的值都是分配在堆上,并且在棧上保存一個堆上存放值的地址。

如上圖 代碼:

//在棧上分配一個空間 存放10

int a = 10;

//在堆上分配一個空間存放變量a的值10,在棧上分配一個空間存放該值在堆中的地址

object o = a;

好的了解基本值類型與引用類型的概念后我們來深入分析他們的本質。

二、值類型與引用類型剖析

1.值類型

值類型是分配在棧中,根據棧的原理,值類型一旦離開當前程序的作用域就會被立刻銷毀!那么我定義兩個相同的值類型會怎么樣呢?看如下代碼:

static void main()

{

//此時在棧中分配一塊空間存放10

int a = 10;

//在棧中繼續分配一塊空間存放a的值 10

int b = a;

//修改b所存放的空間中的10為20

//此時不影響a 因為他們兩個各自有獨立的空間

b = 20;

//打印 a 和 b 的值

Console.WriteLine(" a = {0}",a.ToString());

Console.WriteLine(" b = {0}",b.ToString());

} //作用域結束 銷毀a 和 b 所分配的地址空間

運行結果:

C#編程自學之數據類型和變量二

2.引用類型

引用類型實際的值存放在堆中,在棧中分配堆中分配空間的地址。那么當引用類型離開對象的作用域會發生什么?參考如下代碼:

 

 
  1. class MyClass 
  2. public int a;  
  3.  
  4. class Program 
  5. static void Main(string[] args) 
  6. //此時在堆中分配一個空間存放10,在棧中分配一個空間存放堆中10的空間地址 
  7. MyClass mc1 = new MyClass(); 
  8. mc1.a = 10; 
  9.  
  10. //此時在堆中又分配一個空間存放20,在棧中分配一個空間存放堆中20的空間地址 
  11. MyClass mc2 = new MyClass(); 
  12. mc2.a = 20; 
  13.  
  14. //此時將a中棧的地址賦值給b 
  15. //那么此時 b 也指向 a在堆中分配的地址 
  16. //此時b原來指向的堆空間地址存放的20就被廢棄了 
  17. mc1 = mc2; 
  18.  
  19. //修改該a 和 b 同時指向的堆空間的值為30 
  20. mc2.a = 30; 
  21.  
  22. //打印結果 
  23. Console.WriteLine(" mc1.a = {0}", mc1.a); 
  24. Console.WriteLine(" mc2.a = {0}", mc2.a); 
  25.  

運行結果如下:

C#編程自學之數據類型和變量二

本節課內容就講解到這里吧,請各位同學繼續關注我們的教程。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 湘潭市| 凤山市| 越西县| 鄂伦春自治旗| 加查县| 兴隆县| 汉阴县| 剑川县| 苍溪县| 淮北市| 满城县| 英山县| 旅游| 汉川市| 收藏| 林州市| 绥棱县| 建瓯市| 华容县| 津市市| 于田县| 视频| 神木县| 绵竹市| 随州市| 岢岚县| 富裕县| 丽江市| 额敏县| 沈阳市| 普宁市| 富顺县| 邢台市| 兰考县| 巴林右旗| 古田县| 宿迁市| 乌鲁木齐县| 安国市| 山东省| 江津市|