亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

深入解析C#編程中struct所定義的結構

2020-01-24 01:18:49
字體:
來源:轉載
供稿:網友

結構是使用 struct 關鍵字定義的,例如:

public struct PostalAddress{ // Fields, properties, methods and events go here...}

結構與類共享大多數相同的語法,但結構比類受到的限制更多:

  • 在結構聲明中,除非字段被聲明為 const 或 static,否則無法初始化。
  • 結構不能聲明默認構造函數(沒有參數的構造函數)或析構函數。
  • 結構在賦值時進行復制。將結構賦值給新變量時,將復制所有數據,并且對新副本所做的任何修改不會更改原始副本的數據。在使用值類型的集合(如 Dictionary<string, myStruct>)時,請務必記住這一點。
  • 結構是值類型,而類是引用類型。
  • 與類不同,結構的實例化可以不使用 new 運算符。
  • 結構可以聲明帶參數的構造函數。
  • 一個結構不能從另一個結構或類繼承,而且不能作為一個類的基。所有結構都直接繼承自 System.ValueType,后者繼承自 System.Object。
  • 結構可以實現接口。
  • 結構可用作可以為 null 的類型,因而可向其賦 null 值。

struct 類型適于表示 Point、Rectangle 和 Color 等輕量對象。盡管使用自動實現的屬性將一個點表示為類同樣方便,但在某些情況下使用結構更加有效。例如,如果聲明一個 1000 個 Point 對象組成的數組,為了引用每個對象,則需分配更多內存;這種情況下,使用結構可以節約資源。因為 .NET Framework 包含一個名為 Point 的對象,所以本示例中的結構命名為“CoOrds”。

public struct CoOrds{ public int x, y; public CoOrds(int p1, int p2) { x = p1; y = p2; }}

為結構定義默認(無參數)構造函數是錯誤的。在結構體中初始化實例字段也是錯誤的。只能通過兩種方式初始化結構成員:一是使用參數化構造函數,二是在聲明結構后分別訪問成員。對于任何私有成員或以其他方式設置為不可訪問的成員,只能在構造函數中進行初始化。
如果使用 new 運算符創建結構對象,則會創建該結構對象,并調用適當的構造函數。與類不同,結構的實例化可以不使用 new 運算符。在此情況下不存在構造函數調用,因而可以提高分配效率。但是,在初始化所有字段之前,字段將保持未賦值狀態且對象不可用。
當結構包含引用類型作為成員時,必須顯式調用該成員的默認構造函數,否則該成員將保持未賦值狀態且該結構不可用。(這將導致編譯器錯誤 CS0171。)
對于結構,不像類那樣存在繼承。一個結構不能從另一個結構或類繼承,而且不能作為一個類的基。但是,結構從基類 Object 繼承。結構可實現接口,其方式同類完全一樣。
無法使用 struct 關鍵字聲明類。在 C# 中,類與結構在語義上是不同的。結構是值類型,而類是引用類型。

除非需要引用類型語義,將較小的類聲明為結構,可以提高系統的處理效率。
示例 1
描述
下面的示例演示使用默認構造函數和參數化構造函數的 struct 初始化。
代碼

 public struct CoOrds{ public int x, y; public CoOrds(int p1, int p2) { x = p1; y = p2; }} // Declare and initialize struct objects.class TestCoOrds{ static void Main() { // Initialize:  CoOrds coords1 = new CoOrds(); CoOrds coords2 = new CoOrds(10, 10); // Display results: Console.Write("CoOrds 1: "); Console.WriteLine("x = {0}, y = {1}", coords1.x, coords1.y); Console.Write("CoOrds 2: "); Console.WriteLine("x = {0}, y = {1}", coords2.x, coords2.y); // Keep the console window open in debug mode. Console.WriteLine("Press any key to exit."); Console.ReadKey(); }}


輸出:

 CoOrds 1: x = 0, y = 0 CoOrds 2: x = 10, y = 10

示例 2
描述
下面舉例說明了結構特有的一種功能。它在不使用 new 運算符的情況下創建 CoOrds 對象。如果將 struct 換成 class,程序將不會編譯。
代碼

 public struct CoOrds{ public int x, y; public CoOrds(int p1, int p2) { x = p1; y = p2; }} // Declare a struct object without "new."class TestCoOrdsNoNew{ static void Main() { // Declare an object: CoOrds coords1; // Initialize: coords1.x = 10; coords1.y = 20; // Display results: Console.Write("CoOrds 1: "); Console.WriteLine("x = {0}, y = {1}", coords1.x, coords1.y); // Keep the console window open in debug mode. Console.WriteLine("Press any key to exit."); Console.ReadKey(); }}


輸出:

 CoOrds 1: x = 10, y = 20

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
98精品国产自产在线观看| 成人精品一区二区三区电影黑人| 成人两性免费视频| 久久久久久香蕉网| 国产精品一区二区久久精品| 日韩在线视频网| 亚洲国产精品视频在线观看| 精品国产精品三级精品av网址| 中文字幕精品视频| 中文字幕精品一区二区精品| 亚洲女在线观看| 国产欧美一区二区三区视频| 国产日韩欧美视频在线| 91国自产精品中文字幕亚洲| 欧美精品18videosex性欧美| 久久欧美在线电影| 亚洲成人激情在线观看| 国产日韩精品在线| 岛国av在线不卡| 国产在线高清精品| 日日噜噜噜夜夜爽亚洲精品| 亚洲老司机av| 亚洲精品乱码久久久久久按摩观| 欧美激情国产精品| 大伊人狠狠躁夜夜躁av一区| 久久久久久久久久久国产| 国产免费久久av| 欧美另类69精品久久久久9999| 亚洲欧美国产精品久久久久久久| 久久av资源网站| 欧美中在线观看| 亚洲精品少妇网址| 岛国视频午夜一区免费在线观看| 26uuu另类亚洲欧美日本老年| 欧美日韩在线免费观看| 欧美在线观看网址综合| 久久久久久噜噜噜久久久精品| 欧美多人爱爱视频网站| 成人夜晚看av| 全球成人中文在线| 欧美成人网在线| 亚洲国产精品久久精品怡红院| 亚洲第一网站免费视频| 国产精品69久久久久| 成人h片在线播放免费网站| 久久激情视频免费观看| 亚洲男人第一av网站| 国产69精品99久久久久久宅男| 亚洲黄色av女优在线观看| 97超级碰在线看视频免费在线看| 久久久亚洲精品视频| 国产视频精品在线| 成人啪啪免费看| 中文字幕九色91在线| 亚洲 日韩 国产第一| 精品久久久精品| 亚洲视频视频在线| 久久久97精品| 日韩在线欧美在线| 国产午夜精品麻豆| 一区二区三区天堂av| 亚洲sss综合天堂久久| 国产在线久久久| 亚洲天堂av高清| 性欧美亚洲xxxx乳在线观看| 亚洲图片制服诱惑| 国产丝袜精品第一页| 国产精品人人做人人爽| 日韩国产中文字幕| 久久久之久亚州精品露出| 亚洲已满18点击进入在线看片| 91久久国产精品91久久性色| 欧美成人精品一区二区| 福利视频一区二区| 欧美日韩国产丝袜美女| 欧美裸身视频免费观看| 亚洲国产精品字幕| 午夜美女久久久久爽久久| 久久精品国产亚洲精品| 欧美成人在线免费视频| 色综合男人天堂| 2018中文字幕一区二区三区| 国产极品精品在线观看| 色婷婷av一区二区三区久久| 欧美夜福利tv在线| 亚洲va久久久噜噜噜久久天堂| 中国日韩欧美久久久久久久久| 亚洲激情在线观看| 国产亚洲精品一区二555| 久久艳片www.17c.com| 最新亚洲国产精品| 在线丨暗呦小u女国产精品| 97精品视频在线播放| 欧美日韩爱爱视频| 国产美女搞久久| 国产欧美精品va在线观看| 日韩成人免费视频| 欧美日韩国产成人在线| 欧美性xxxxxx| 国产欧美一区二区白浆黑人| 97成人精品视频在线观看| 国产69久久精品成人| 欧美国产日韩一区| 日韩在线观看免费av| 这里只有精品在线观看| 在线视频欧美性高潮| 亚洲精品福利资源站| 性欧美xxxx交| 亚洲人成毛片在线播放| 国产精品自拍偷拍视频| 亚洲国产精品va在线| 欧美亚洲另类激情另类| 国产精品av在线播放| 欧美激情videoshd| 国内精品国产三级国产在线专| 中文字幕日韩在线播放| 欧美性在线观看| 国产精品男女猛烈高潮激情| 亚洲va码欧洲m码| 亚洲精品国产精品久久清纯直播| 久久在精品线影院精品国产| 日本高清+成人网在线观看| 久久中文字幕国产| 国产精品久久久久久久午夜| 日韩欧美综合在线视频| 亚洲欧美在线看| 精品久久久一区二区| 亚洲成年网站在线观看| 51精品在线观看| 亚洲欧美日韩一区二区在线| 国产欧美一区二区三区视频| 国产丝袜一区二区三区| 日韩精品在线视频观看| 欧美日韩在线第一页| 久操成人在线视频| 91在线观看免费高清完整版在线观看| 高清欧美性猛交| 久久国产精品久久国产精品| 亚洲成人1234| 色在人av网站天堂精品| 久久久久国产精品免费| 国产91精品久久久久| 欧美日本国产在线| 亚洲精品乱码久久久久久金桔影视| 日韩成人高清在线| 欧美激情欧美激情| 久久av在线看| 伊人av综合网| 精品福利一区二区| 亚洲精品大尺度| 欧美性猛交xxxx乱大交极品| 久久久久久久影院| 日韩中文娱乐网| 热99久久精品| 色综合91久久精品中文字幕| 亚洲在线免费观看| 热99精品只有里视频精品| 亚洲男人天堂2019| 国产精品视频一| 欧美性色xo影院| 亚洲偷熟乱区亚洲香蕉av| 亚洲综合成人婷婷小说| 国产精品网红直播| 色悠悠久久88|