中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#語言知識點整理 - 結構

發布時間:2020-07-19 06:12:41 來源:網絡 閱讀:517 作者:勇闖天涯X 欄目:編程語言

一、 結構與類的區別:

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

1. 結構是值類型,而類是引用類型。

2. 在結構聲明中,除非字段被聲明為 const 或 static,否則無法初始化。

3. 結構不能聲明默認構造函數(沒有參數的構造函數)或析構函數。結構可以聲明帶參數的構造函數。

4. 一個結構不能從另一個結構或類繼承,而且不能作為一個類的基類。所有結構都直接繼承自 System.ValueType,后者繼承自 System.Object。

5. 結構可以實現接口。

6. 與類不同,結構的實例化可以不使用 new 運算符。

7. 結構在賦值時進行復制。 將結構賦值給新變量時,將復制所有數據,并且對新副本所做的任何修改不會更改原始副本的數據。在使用值類型的集合(如 Dictionary<string, myStruct>)時,請務必記住這一點。

8. 結構可以為 null 的類型,因而可向其賦 null 值。

二、 結構體示例:

 

   1: using System;
   2: using System.Collections.Generic;
   3: using System.Linq;
   4: using System.Text;
   5:  
   6: namespace CSharp.Struct
   7: {
   8:  
   9:     public struct CoOrds //不能從另一個結構或類繼承,但可實現接口
  10:     {
  11:         public int x, y;
  12:  
  13:         //結構中不能有實例字段初始值,除非被聲明為 const 或 static
  14:         //public int x = 0;
  15:         //public int y = 0;
  16:  
  17:         //結構不能聲明默認構造函數(沒有參數的構造函數)或析構函數
  18:         //public CoOrds()
  19:         //{
  20:  
  21:         //}
  22:  
  23:         //結構可以聲明帶參數的構造函數。
  24:         public CoOrds(int p1, int p2)
  25:         {
  26:             x = p1;
  27:             y = p2;
  28:         }
  29:     }
  30:  
  31:     class Program
  32:     {
  33:         static void Main(string[] args)
  34:         {
  35:             //
  36:             //與類不同,結構的實例化可以不使用 new 運算符。 
  37:             //
  38:  
  39:             // Declare an object:
  40:             CoOrds coords1;
  41:  
  42:             // Initialize:
  43:             coords1.x = 10;
  44:             coords1.y = 20;
  45:  
  46:             // Display results:
  47:             Console.Write("CoOrds 1: ");
  48:             Console.WriteLine("x = {0}, y = {1}", coords1.x, coords1.y);
  49:  
  50:             // Initialize:   
  51:             CoOrds coords2 = new CoOrds();
  52:             CoOrds coords3 = new CoOrds(10, 10);
  53:             
  54:             // Display results:
  55:             Console.Write("CoOrds 2: ");
  56:             Console.WriteLine("x = {0}, y = {1}", coords2.x, coords2.y);
  57:  
  58:             Console.Write("CoOrds 3: ");
  59:             Console.WriteLine("x = {0}, y = {1}", coords3.x, coords3.y);
  60:  
  61:             //
  62:             //將結構賦值給新變量時,將復制所有數據,并且對新副本所做的任何修改不會更改原始副本的數據。 
  63:             //
  64:  
  65:             //Copy
  66:             Console.Write("After Copy:\n");
  67:             coords2 = coords3;
  68:             coords2.x = 20;
  69:             // Display results:
  70:             Console.Write("CoOrds 2: ");
  71:             Console.WriteLine("x = {0}, y = {1}", coords2.x, coords2.y);
  72:  
  73:             Console.Write("CoOrds 3: ");
  74:             Console.WriteLine("x = {0}, y = {1}", coords3.x, coords3.y);
  75:  
  76:             // Keep the console window open in debug mode.
  77:             Console.WriteLine("Press any key to exit.");
  78:             Console.ReadKey();
  79:        
  80:         }
  81:     }
  82: }

 

三、 參考鏈接:

C#封裝c++結構體與互調用:

http://developer.51cto.com/art/200908/143782.htm

解決C#結構體數組間的轉化

http://developer.51cto.com/art/200908/143779.htm

C#結構體的序列化與反序列化

http://developer.51cto.com/art/200908/144015.htm

StructLayoutAttribute Class

http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.structlayoutattribute.aspx

How to: Create a C/C++ Union Using Attributes (C# Programming Guide)

http://msdn.microsoft.com/en-us/library/acxa5b99%28v=vs.80%29.aspx

附件:http://down.51cto.com/data/2362507
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

裕民县| 金溪县| 宁蒗| 横峰县| 宣恩县| 武汉市| 九江市| 抚顺市| 丰原市| 玉林市| 娱乐| 临湘市| 晋城| 桃江县| 舟曲县| 信阳市| 安西县| 南汇区| 汕头市| 连州市| 濮阳县| 池州市| 永康市| 吉木乃县| 巴里| 科技| 玉田县| 汉川市| 澄迈县| 汽车| 双辽市| 简阳市| 蒙山县| 宁南县| 武义县| 石嘴山市| 琼海市| 高安市| 抚宁县| 嘉祥县| 夹江县|