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

C#結構學習的詳細介紹

開發 后端
C#結構學習要掌握哪方面的內容呢?那么本文就向你介紹相關的內容。

C#結構1.C#結構的聲明

·結構是用戶自定義的值類型

  1. struct Pair   
  2.  
  3. {   
  4.  
  5.  public int X, Y;   
  6. //公有變量名單詞的首字母大寫(PascalCase規則)  
  7.  
  8. }  
  9. struct Pair   
  10.  
  11. {   
  12.     private int x, y;   
  13. //非公有變量名第一個單詞的首字母小寫(camelCase規則)  
  14. }  
  15.  
  16. struct Pair   
  17.  
  18. {   
  19.  
  20.     int x, y; //缺省的訪問修飾符是private  
  21.  
  22. };//可以有結尾分號 

C#結構是C#程序員用來定義自己的值類型的最普遍的機制。結構比枚舉更強大,因為它提供函數、字段、構造函數、操作符和訪問控制。結構成員的缺省訪問權限是private(在C++中是public)。當你定義結構的成員名時,不要忘了對公有成員使用PascalCase規則,而對非公有成員使用camelCase規則。

結構類的聲明中雖然可以使用結尾分號,但建議你不要使用,這只不過是為了照顧C++程序員的習慣。

C#結構2.值的產生

·一個結構類的變量存在于棧(stack)中

◆字段不是被預先賦值的

◆字段只有被賦值后才能讀

◆使用點操作符來訪問成員

下面的例子假設Pair是一結構,它有兩公有整數類成員X,Y

  1. static void Main()   
  2.  
  3. {   
  4.  
  5.     Pair p;   
  6.  
  7.     Console.Write(p.X); //錯誤  
  8.  
  9.     ...   
  10.  
  11. }  
  12.  
  13.    
  14.  
  15. static void Main()   
  16.  
  17. {   
  18.  
  19.     Pair p;   
  20.  
  21.     p.X = 0;   
  22.  
  23.     Console.Write(p.X); //正確  
  24.  
  25.     ...   
  26.  

C#結構類的變量存在于棧中。在上面的例子中,雖然聲明了一個叫p的Pair類結構變量,但實際上只是聲明兩個局部變量p.X和p.Y的一種簡寫形式。

上面例子中的第一段程序的Console.Write試圖使用p.X的值,但它是錯誤的,因為p.X沒有被賦初值。

C#結構3.值的初始化

·一個結構變量:

◆總是能使用缺省構造函數來進行初始化

◆缺省構造函數把字段初始化為0/false/null

  1. static void Main()   
  2.  
  3. {   
  4.     Pair p;   
  5.  
  6.     Console.Write(p.X); //錯誤,p.X沒有初始化  
  7.  
  8.     ...   
  9.  
  10. }  
  11.  
  12. static void Main()   
  13.  
  14. {   
  15.  
  16.     Pair p = new Pair();   
  17.  
  18.     Console.Write(p.X); //正確,p.X=0  
  19.  
  20.     ...   
  21.  

除了上面介紹的初始化方法外,還可以使用缺省構造函數來初始化一個結構變量。調用構造函數總是使用new關鍵字。一個結構變量是值類型的,它直接存在于棧中,new關鍵字的使用不會在堆中開辟內存。結構的缺省構造函數總是把結構變量中的所有字段初始化(你不能改變這一行為,在下面一節會講到)。

C#結構學習遇到的問題:如果你有C++或Java背景,你可能會很難相信使用new關鍵字來調用構造函數不會在堆中分配內存,但在C#中就是這樣。結構變量存在于棧中,調用構造函數初始化它的字段,沒有發生堆的內存分配。

C++程序員注意:在C#中調用缺省構造函數必須使用括號。

  1. Pair p = new Pair; //錯誤  
  2.  
  3. Pair p = new Pair();//正確 

C#結構4.值的構造函數

·一般規則

◆編譯器聲明缺省構造函數

◆你不能聲明缺省構造函數

◆缺省構造函數把所有的實例字段初始化為0/false/null

  1. struct Pair   
  2.  
  3. {   
  4.  
  5. }  
  6.  
  7. //編譯器聲明一缺省構造函數  
  8.  
  9. struct Pair   
  10.  
  11. {   
  12.  
  13.     public Pair()   
  14.  
  15.     { ... }   
  16.  
  17. }  
  18.  
  19. //錯誤,不能自己聲明缺省構造函數  
  20.  
  21. struct Pair   
  22.  
  23. {   
  24.     public Pair(int x, int y)   
  25.  
  26.     { ... }   
  27.  
  28. }  
  29.  
  30. //正確,但編譯器聲明的缺省構造函數仍存在  

C#結構類總有一編譯器聲明的公有的缺省構造函數。不管你有沒有聲明構造函數,編譯器聲明的公有的缺省構造函數總是存在的。所以你不能定義缺省構造函數,這樣會出現兩個缺省構造函數,這是不允許的。但要注意的是,這只適合于結構,對于類是不適用的。編譯器產生的缺省構造函數把所有的實例字段歸零化:

◆bool型化為false

◆整型(包括字符型)化為0

◆實型化為0.0

◆枚舉型化為0

◆引用型(包括字符串)化為null

用戶自定義的結構類的構造函數的默認訪問權限是private,和結構類的字段一樣。

C#不允許你聲明一個和構造函數名字一樣的函數。

C#結構5.:this(…)

·一個構造函數可以調用另一構造函數

  1. struct ColouredPoint   
  2.  
  3. {   
  4.  
  5.     public ColouredPoint(int x, int y)   
  6.  
  7. this(x, y, Colour.Red)   
  8.  
  9.     {   
  10.     }   
  11.  
  12.     public ColouredPoint(int x, int y, Colour c)   
  13.     {   
  14. ...   
  15.  
  16.     }    
  17.     ...   
  18.     private int x, y;   
  19.     private Colour c;   

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

【編輯推薦】

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

2009-08-10 16:30:56

C# BitmapDa

2009-08-12 15:34:40

C# DBNull

2009-08-07 16:10:20

C#調用API

2009-08-26 17:31:59

C# const常量

2009-08-03 18:49:17

C#和Java

2009-08-21 15:16:23

C#使用指針

2009-08-20 15:26:42

C#循環語句

2009-08-24 18:21:23

C# ListView

2009-08-21 09:23:11

C# GDI+

2009-08-14 17:04:50

C#類型系統

2009-08-13 13:38:30

C#命名規范

2011-07-14 11:08:30

C#繼承

2011-04-11 12:22:11

數據結構C++

2011-04-11 12:48:36

隊列數據結構C++

2009-08-27 14:32:15

C#編寫ActiveX

2009-08-06 14:59:36

C#編譯器

2009-08-25 17:28:23

C#創建DataSet

2009-08-13 15:40:28

C#基礎知識

2011-06-08 13:35:18

C#數據類型

2009-08-27 17:31:44

C#創建Windows
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品一区二区电影 | 日本精品在线一区 | 欧美一区二区三区一在线观看 | 中国美女撒尿txxxxx视频 | 国产免费又色又爽又黄在线观看 | 一区二区三区免费 | 99久久精品国产毛片 | 亚洲精品国产第一综合99久久 | 可以在线观看av的网站 | 亚洲视频免费观看 | 成人精品一区二区三区中文字幕 | 日韩高清中文字幕 | 男人的天堂视频网站 | 亚洲成人精品久久 | 九九亚洲 | 在线观看国产视频 | 欧美日韩国产中文 | 亚洲成人综合社区 | 91视频官网 | 国产日韩久久 | 国产乱码高清区二区三区在线 | 午夜三级在线观看 | 精品欧美乱码久久久久久1区2区 | 精品一区二区三区在线观看国产 | 亚洲天天 | 免费三级网 | www日本高清 | 九色在线 | 狠狠操你| 亚洲国产精品99久久久久久久久 | 中文字幕久久精品 | 亚洲精品一 | 精品国产欧美一区二区 | 成人在线黄色 | 亚洲小视频在线观看 | 日韩一区二区在线免费观看 | 久久99精品久久久久久噜噜 | 国产成人精品一区二区三区网站观看 | 久久久久久久一区 | 国产精品免费看 | 日韩欧美成人精品 |