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

C#類和結構簡單介紹

開發 后端
這里介紹C#類和結構,一些輕量級的對象最好使用結構,但數據量大或有復雜處理邏輯對象最好使用類。如:Geoemtry最好使用類,而 Geometry 中點的成員最好使用結構。

C#語言還是比較常見的東西,這里我們主要介紹C#類和結構,包括介紹C#類和結構示例等方面。

C#類和結構的區別

類:
◆類是引用類型在堆上分配,類的實例進行賦值只是復制了引用,都指向同一段實際對象分配的內存
◆類有構造和析構函數
◆類可以繼承和被繼承

結構:
◆結構是值類型在棧上分配(雖然棧的訪問速度比較堆要快,但棧的資源有限放),結構的賦值將分配產生一個新的對象。
◆結構沒有構造函數,但可以添加。結構沒有析構函數。
◆結構不可以繼承自另一個結構或被繼承,但和類一樣可以繼承自接口。

C#類和結構示例:
根據以上比較,我們可以得出一些輕量級的對象***使用結構,但數據量大或有復雜處理邏輯對象***使用類。如:Geoemtry(GIS 里的一個概論,在 OGC 標準里有定義) ***使用類,而 Geometry 中點的成員***使用結構。

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4.    
  5. namespace Example16  
  6. {  
  7. interface IPoint  
  8. {  
  9. double X  
  10. {  
  11. get;  
  12. set;  
  13. }  
  14. double Y  
  15. {  
  16. get;  
  17. set;  
  18. }  
  19. double Z  
  20. {  
  21. get;  
  22. set;  
  23. }  
  24. }  
  25. //結構也可以從接口繼承  
  26. struct Point: IPoint  
  27. {  
  28. private double x, y, z;  
  29. //結構也可以增加構造函數  
  30. public Point(double X, double Y, double Z)  
  31. {  
  32. this.x = X;  
  33. this.y = Y;  
  34. this.z = Z;  
  35. }  
  36. public double X  
  37. {  
  38. get { return x; }  
  39. set { x = value; }  
  40. }  
  41. public double Y  
  42. {  
  43. get { return x; }  
  44. set { x = value; }  
  45. }  
  46. public double Z  
  47. {  
  48. get { return x; }  
  49. set { x = value; }  
  50. }  
  51. }  
  52. //在此簡化了點狀Geometry的設計,實際產品中還包含Project(坐標變換)等復雜操作  
  53. class PointGeometry  
  54. {  
  55. private Point value;  
  56.  
  57. public PointGeometry(double X, double Y, double Z)  
  58. {  
  59. value = new Point(X, Y, Z);  
  60. }  
  61. public PointGeometry(Point value)  
  62. {  
  63. //結構的賦值將分配新的內存  
  64. this.value = value;  
  65. }  
  66. public double X  
  67. {  
  68. get { return value.X; }  
  69. set { this.value.X = value; }  
  70. }  
  71. public double Y  
  72. {  
  73. get { return value.Y; }  
  74. set { this.value.Y = value; }  
  75. }  
  76. public double Z  
  77.  {  
  78. get { return value.Z; }  
  79. set { this.value.Z = value; }  
  80. }  
  81. public static PointGeometry operator +(PointGeometry Left, PointGeometry Rigth)  
  82. {  
  83. return new PointGeometry(Left.X + Rigth.X, Left.Y + Rigth.Y, Left.Z + Rigth.Z);  
  84. }  
  85. public override string ToString()  
  86. {  
  87. return string.Format("X: {0}, Y: {1}, Z: {2}", value.X, value.Y, value.Z);  
  88. }  
  89. }  
  90. class Program  
  91. {  
  92. static void Main(string[] args)  
  93. {  
  94. Point tmpPoint = new Point(1, 2, 3);  
  95.    
  96. PointGeometry tmpPG1 = new PointGeometry(tmpPoint);  
  97. PointGeometry tmpPG2 = new PointGeometry(tmpPoint);  
  98. tmpPG2.X = 4;  
  99. tmpPG2.Y = 5;  
  100. tmpPG2.Z = 6;  
  101.    
  102. //由于結構是值類型,tmpPG1 和 tmpPG2 的坐標并不一樣  
  103. Console.WriteLine(tmpPG1);  
  104. Console.WriteLine(tmpPG2);  
  105.    
  106. //由于類是引用類型,對tmpPG1坐標修改后影響到了tmpPG3  
  107. PointGeometry tmpPG3 = tmpPG1;  
  108. tmpPG1.X = 7;  
  109. tmpPG1.Y = 8;  
  110. tmpPG1.Z = 9;  
  111. Console.WriteLine(tmpPG1);  
  112. Console.WriteLine(tmpPG3);  
  113.    
  114. Console.ReadLine();  
  115. }  
  116. }  

【編輯推薦】

  1. C#靜態變量簡單分析
  2. C# sealed修飾符學習筆記
  3. C# const和static readonly區別淺談
  4. C#隱含類型局部變量淺析
  5. C#對象初始化器描述
責任編輯:佚名 來源: 博客園
相關推薦

2009-08-06 14:53:41

C# User類

2009-09-02 14:33:57

C#類實現接口

2009-08-07 09:29:22

C#數組C#函數

2009-09-07 16:09:19

C#和Java特點

2009-08-18 16:57:24

VB.NET和C#

2009-08-20 18:44:54

C#和ADO.NET

2009-08-27 16:18:47

C#類C#結構體

2009-08-12 09:41:28

C# Director

2009-09-03 15:57:11

C# SystemMe

2009-08-13 17:36:54

編譯C#代碼

2009-09-03 09:40:57

C#創建表單

2009-08-06 18:15:13

C# SQL Serv

2009-09-01 16:19:57

C# new()約束

2009-08-20 16:25:59

C# 匿名方法

2009-08-25 13:38:35

C# Timer組件

2009-08-07 17:12:07

C# DLL函數

2009-08-14 16:46:44

C#元數據

2009-08-03 17:51:43

C#引用類型

2009-08-21 17:55:52

C#復合控件

2009-08-27 10:19:22

C#匿名類型
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 宅男伊人 | www视频在线观看 | 国产传媒 | 中文字幕福利视频 | 欧美精品网站 | 亚洲美女在线一区 | 亚洲精品乱码久久久久v最新版 | 亚洲精品乱码8久久久久久日本 | 色www精品视频在线观看 | 国产农村妇女精品一二区 | 国产精品大全 | 欧美亚洲国语精品一区二区 | 在线播放中文字幕 | 欧美专区在线 | av官网在线 | 欧美成人精品 | www,黄色,com| 亚洲福利网站 | 综合精品| 亚洲国产成人精品女人久久久 | 不卡一区二区三区四区 | 日韩高清www| 91免费版在线观看 | 日韩欧美在线一区 | 一级毛片在线播放 | 免费毛片www com cn | 亚洲午夜三级 | a级毛片基地 | 国产成人小视频 | 欧美日韩亚洲系列 | 成人精品一区亚洲午夜久久久 | 久久久噜噜噜www成人网 | 亚洲国产成人精品女人久久久 | 玖玖视频国产 | 狠狠草视频 | 久久伦理中文字幕 | 成人在线h | 国产1区2区3区 | 亚洲欧美日韩在线一区二区 | 精品国产乱码久久久久久丨区2区 | 伊人精品在线视频 |