成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

關于C#結構的一些認識

開發 后端
關于C#結構的一些認識向你介紹了關于C#結構的特點和示例等等方面的內容。

C#結構了解之前的話:在C++語言里面結構struct和類在許多方面都是相近的,只不過在存取方式上存在差別。但是,在C#下結構和類有著明顯的不同點:

1、C#結構是堆棧對象,不能在堆上創建它;

2、C#結構可以繼承接口,但是不能繼承自其它結構;

3、不能重寫結構的默認構造函數,需要自定義構造函數時必須創建附帶參數的構造函數,以保證和默認構造函數的參數列表有所區別;

4、當使用new來創建結構對象時其構造函數自動被調用,若僅是像聲明一個int類型的變量那樣聲明一個結構類型的變量而不new的話,那么結構中成員變量必須被初始化后才能使用該結構對象。

C#結構實例:

  1. struct Student : IGrade  
  2.  
  3. public int maths;  
  4. public int english;  
  5. public int csharp;  
  6.  
  7. public int GetTot()  
  8.     {  
  9. return maths+english+csharp;  
  10.     }  
  11.  
  12.     public Student(int y)  
  13. {  
  14. maths = english = csharp = y;  
  15.  }  
  16. }  
  17.     public string GetGrade()  
  18.  {  
  19. if(GetTot() > 240 )  
  20.  return "Brilliant";  
  21. if(GetTot() > 140 )  
  22. return "Passed";  
  23. return "Failed";  
  24.  }  
  25. }  
  26. interface IGrade  
  27. {  
  28.     string GetGrade();  

接下來看看怎么使用剛才創建的C#結構,代碼如下:

  1. Student s1 = new Student();  
  2. Console.WriteLine(s1.GetTot());  
  3. Console.WriteLine(s1.GetGrade()); 

C#結構示例之輸出:

  1. 0  
  2. Failed 

上述代碼顯示默認的構造函數被調用,構造函數將所有結構中的int成員變量都自動初始化為0,這就是為何合計為0的原因。

下面來看一段有意思的代碼:

  1. Student s2;  
  2. s2.maths = s2.english = s2.csharp = 50;  
  3. Console.WriteLine(s2.GetTot());  
  4. Console.WriteLine(s2.GetGrade()); 

C#結構示例之輸出:

  1. 150  
  2. Passed 

上述代碼我們沒有使用new來創建結構,所以構造函數不會被調用,僅是聲明一個結構類型的變量s2,但是緊接著我們為結構的所有成員變量進行初始化賦值,那么結構照樣可以使用。盡管很多人都在爭論,認為這種賦值伎倆太不專業且顯得有點傻,然而誰也無法找到合情合理的解釋,但是這樣做的確可行。當我們注釋掉賦值語句后,編譯器則會報錯:使用了未賦值的本地變量s2。

我們還可以使用自定義構造函數并傳遞一個整型變量來創建結構對象,代碼如下:

  1. Student s3 = new Student(90);  
  2. Console.WriteLine(s3.GetTot());  
  3. Console.WriteLine(s3.GetGrade()); 

C#結構示例之輸出:

  1. 270  
  2. Brilliant 

不像類是引用類型,結構是值類型的,所以結構比類操作起來更簡單。當使用類僅存儲一些數據時,你會發現使用結構會好得多!結構化數組是在堆上創建的,而以一個一個類的形式來創建對象,則必須提前在堆上分配內存,而且每個類的引用地址也需要額外保存起來,所以使用結構化數組則更加的有效率。實際上在.Net框架里大部分類也都是結構,譬如:System.Drawing.Point。

關于C#結構的相關內容就向你介紹到這里,希望對你學習C#結構有所幫助。

【編輯推薦】

  1. C#的結構體使用實例淺析
  2. C#結構體變量學習淺談
  3. 解析C#結構體指針
  4. C#指針使用簡析
  5. C#結構學習的詳細介紹
責任編輯:仲衡 來源: 互聯網轉載
相關推薦

2019-10-30 14:58:45

MVCAndroid表現層

2022-01-12 08:30:55

結構體指針STM32

2009-07-30 18:49:31

C#時間類型

2019-11-18 14:27:01

虛擬化Intel VAMD SVM

2011-07-13 09:13:56

Android設計

2009-08-19 16:59:25

C# 操作符

2009-08-12 11:20:51

C#運算符重載

2009-08-06 16:01:30

C#接口成員

2009-08-13 09:49:16

C#關鍵字

2013-04-07 10:40:55

前端框架前端

2009-06-18 09:51:25

Java繼承

2012-09-25 10:03:56

JavaJava封面Java開發

2009-08-12 17:08:06

C#遠程計算機

2009-12-11 14:17:36

ASP.NET Coo

2009-09-23 17:29:54

三層框架

2023-10-27 08:00:44

Spring瀏覽器機制

2011-03-11 09:27:11

Java性能監控

2015-12-04 10:04:53

2012-04-19 10:06:55

微軟Windows 8 E

2020-09-28 06:45:42

故障復盤修復
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日日操夜夜操天天操 | 亚洲 成人 在线 | 亚洲国产精久久久久久久 | 成人中文字幕在线 | 日韩久久久久 | 99精品国产一区二区三区 | 在线播放国产一区二区三区 | 国产一级片91 | 亚洲精品一| 欧美1区2区 | 亚洲一二三区在线观看 | 欧美日韩视频网站 | 密室大逃脱第六季大神版在线观看 | 91亚洲国产成人久久精品网站 | 亚洲成人自拍 | 欧美一级欧美三级在线观看 | 亚洲区一区二区 | 久久9久| 日韩色视频 | 国产精品视频一二三区 | 日韩精品一区二区三区 | 亚洲精品久久久久久久久久久久久 | 久久777| 欧美在线国产精品 | 日本在线视频一区二区 | 精品日韩| 久久久久久久国产 | 99精品欧美一区二区蜜桃免费 | 97超碰免费| 欧美日韩高清免费 | 亚洲欧美综合网 | 一区日韩 | 亚洲综合在 | 国产精品久久久久久久久久软件 | 欧美中文字幕在线观看 | 日本不卡一区二区三区 | 国产精品毛片一区二区三区 | 激情a | 久久久久久久91 | www.日本三级 | 亚洲毛片在线观看 |