日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
C#類(lèi)和結(jié)構(gòu)簡(jiǎn)單介紹

C#語(yǔ)言還是比較常見(jiàn)的東西,這里我們主要介紹C#類(lèi)和結(jié)構(gòu),包括介紹C#類(lèi)和結(jié)構(gòu)示例等方面。

創(chuàng)新互聯(lián)是一家專(zhuān)注于網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),谷城網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專(zhuān)注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專(zhuān)業(yè)建站公司;建站業(yè)務(wù)涵蓋:谷城等地區(qū)。谷城做網(wǎng)站價(jià)格咨詢(xún):028-86922220

C#類(lèi)和結(jié)構(gòu)的區(qū)別

類(lèi):
◆類(lèi)是引用類(lèi)型在堆上分配,類(lèi)的實(shí)例進(jìn)行賦值只是復(fù)制了引用,都指向同一段實(shí)際對(duì)象分配的內(nèi)存
◆類(lèi)有構(gòu)造和析構(gòu)函數(shù)
◆類(lèi)可以繼承和被繼承

結(jié)構(gòu):
◆結(jié)構(gòu)是值類(lèi)型在棧上分配(雖然棧的訪(fǎng)問(wèn)速度比較堆要快,但棧的資源有限放),結(jié)構(gòu)的賦值將分配產(chǎn)生一個(gè)新的對(duì)象。
◆結(jié)構(gòu)沒(méi)有構(gòu)造函數(shù),但可以添加。結(jié)構(gòu)沒(méi)有析構(gòu)函數(shù)。
◆結(jié)構(gòu)不可以繼承自另一個(gè)結(jié)構(gòu)或被繼承,但和類(lèi)一樣可以繼承自接口。

C#類(lèi)和結(jié)構(gòu)示例:
根據(jù)以上比較,我們可以得出一些輕量級(jí)的對(duì)象***使用結(jié)構(gòu),但數(shù)據(jù)量大或有復(fù)雜處理邏輯對(duì)象***使用類(lèi)。如:Geoemtry(GIS 里的一個(gè)概論,在 OGC 標(biāo)準(zhǔn)里有定義) ***使用類(lèi),而 Geometry 中點(diǎn)的成員***使用結(jié)構(gòu)。

 
 
 
  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. //結(jié)構(gòu)也可以從接口繼承
  26. struct Point: IPoint
  27. {
  28. private double x, y, z;
  29. //結(jié)構(gòu)也可以增加構(gòu)造函數(shù)
  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. //在此簡(jiǎn)化了點(diǎn)狀Geometry的設(shè)計(jì),實(shí)際產(chǎn)品中還包含Project(坐標(biāo)變換)等復(fù)雜操作
  53. class PointGeometry
  54. {
  55. private Point value;
  56. public PointGeometry(double X, double Y, double Z)
  57. {
  58. value = new Point(X, Y, Z);
  59. }
  60. public PointGeometry(Point value)
  61. {
  62. //結(jié)構(gòu)的賦值將分配新的內(nèi)存
  63. this.value = value;
  64. }
  65. public double X
  66. {
  67. get { return value.X; }
  68. set { this.value.X = value; }
  69. }
  70. public double Y
  71. {
  72. get { return value.Y; }
  73. set { this.value.Y = value; }
  74. }
  75. public double Z
  76.  {
  77. get { return value.Z; }
  78. set { this.value.Z = value; }
  79. }
  80. public static PointGeometry operator +(PointGeometry Left, PointGeometry Rigth)
  81. {
  82. return new PointGeometry(Left.X + Rigth.X, Left.Y + Rigth.Y, Left.Z + Rigth.Z);
  83. }
  84. public override string ToString()
  85. {
  86. return string.Format("X: {0}, Y: {1}, Z: {2}", value.X, value.Y, value.Z);
  87. }
  88. }
  89. class Program
  90. {
  91. static void Main(string[] args)
  92. {
  93. Point tmpPoint = new Point(1, 2, 3);
  94.  
  95. PointGeometry tmpPG1 = new PointGeometry(tmpPoint);
  96. PointGeometry tmpPG2 = new PointGeometry(tmpPoint);
  97. tmpPG2.X = 4;
  98. tmpPG2.Y = 5;
  99. tmpPG2.Z = 6;
  100.  
  101. //由于結(jié)構(gòu)是值類(lèi)型,tmpPG1 和 tmpPG2 的坐標(biāo)并不一樣
  102. Console.WriteLine(tmpPG1);
  103. Console.WriteLine(tmpPG2);
  104.  
  105. //由于類(lèi)是引用類(lèi)型,對(duì)tmpPG1坐標(biāo)修改后影響到了tmpPG3
  106. PointGeometry tmpPG3 = tmpPG1;
  107. tmpPG1.X = 7;
  108. tmpPG1.Y = 8;
  109. tmpPG1.Z = 9;
  110. Console.WriteLine(tmpPG1);
  111. Console.WriteLine(tmpPG3);
  112.  
  113. Console.ReadLine();
  114. }
  115. }
  116. }

當(dāng)前文章:C#類(lèi)和結(jié)構(gòu)簡(jiǎn)單介紹
當(dāng)前URL:http://m.5511xx.com/article/coseogi.html