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

C#結構體和類的區別淺析

開發 后端
C#結構體和類的區別是什么呢?C#結構體和類的區別是如何表現的呢?本文就向你講述這方面的內容。

C#結構體和類的區別問題:在C#編程語言中,類屬于引用類型的數據類型,結構體屬于值類型的數據類型,這兩種數據類型的本質區別主要是各自指向的內存位置不同。傳遞類的時候,主要表現為是否同時改變了源對象。

C#結構體和類的區別技術要點:

◆類在傳遞的時候,傳遞的內容是位于托管內存中的位置,結構體在傳遞的時候,傳遞的內容是位于程序堆棧區的內容。當類的傳遞對象修改時,將同時修改源對象,而結構體的傳遞對象修改時,不會對源對象產生影響。

◆在一個類中,可以定義默認的、不帶參數的構造函數,而在結構體中不能定義默認的、不帶參數的構造函數。兩者都可以定義帶有參數的構造函數,通過這些參數給各自的字段賦值或初始化。

C#結構體和類的區別之實現步驟

(1)創建控制臺應用程序項目,命名為“ClassAndStruct”。

(2)打開并編輯Program.cs文件,代碼如下所示。

  1. using System;   //C#結構體和類的區別
  2.  
  3. using System.Collections.Generic;   
  4.  
  5. using System.Text;   
  6.  
  7. namespace ClassAndStruct   
  8.  
  9. {   
  10.  
  11. class Program   
  12.  
  13. {   
  14.  
  15. static void Main(string[] args)   
  16.  
  17. {   
  18.  
  19. //使用帶參數的構造函數創建員工類的實例   
  20.  
  21. classEmployee clsEmpA = new 
  22. classEmployee("Pony","Smith",43);   
  23.  
  24. classEmployee clsEmpB = clsEmpA;   
  25.  
  26. //修改引用數據   
  27.  
  28. clsEmpB.Age = 33;   
  29.  
  30. //使用帶參數的構造函數創建員工結構體的實例   
  31.  
  32. structEmployee strctEmpA = 
  33. new structEmployee("Pony""Smith", 43);   
  34.  
  35. structEmployee strctEmpB = strctEmpA;   
  36.  
  37. //修改   
  38.  
  39. strctEmpB.Age = 33;   
  40.  
  41. Console.WriteLine("類的數據:姓名-{0} {1} 年齡-{2}",   
  42.  
  43. clsEmpA.FirstName,clsEmpA.LastName,clsEmpA.Age);   
  44.  
  45. Console.WriteLine("結構體的數據:姓名-{0} {1} 年齡-{2}",   
  46.  
  47. strctEmpA.FirstName, strctEmpA.LastName, strctEmpA.Age);   
  48.  
  49. Console.ReadLine();   
  50.  
  51. }   
  52.  
  53. }   
  54.  
  55. class classEmployee//表示員工的類   
  56.  
  57. {   
  58.  
  59. private string firstname;   
  60.  
  61. public string FirstName   
  62.  
  63. {   
  64.  
  65. get { return firstname; }   
  66.  
  67. set { firstname = value; }   
  68.  
  69. }   
  70.  
  71. private string lastname;   
  72.  
  73. public string LastName   
  74.  
  75. {   
  76.  
  77. get { return lastname; }   
  78.  
  79. set { lastname = value; }   
  80.  
  81. }   
  82.  
  83. private int age;   
  84.  
  85. public int Age   
  86.  
  87. {   
  88.  
  89. get { return age; }   
  90.  
  91. set { age = value; }   
  92.  
  93. }   
  94.  
  95. //類的默認構造函數,可以在類中重新定義   
  96.  
  97. public classEmployee()   
  98.  
  99. {   
  100.  
  101. firstname = "";   
  102.  
  103. lastname = "";   
  104.  
  105. age = 0;   
  106.  
  107. }   
  108.  //C#結構體和類的區別
  109. //類的帶參數的構造函數,在構造類實例的同時給字段賦值   
  110.  
  111. public classEmployee(
  112. string strFirstNamem, string strLastName, int iAge)   
  113.  
  114. {   
  115.  
  116. firstname = strFirstNamem;   
  117.  
  118. lastname = strLastName;   
  119.  
  120. age = iAge;   
  121.  
  122. }   
  123.  
  124. }   
  125.  
  126. struct structEmployee//表示員工的結構體   
  127.  
  128. {   
  129.  
  130. private string firstname;   
  131.  
  132. public string FirstName   
  133.  
  134. {   
  135.  
  136. get { return firstname; }   
  137.  
  138. set { firstname = value; }   
  139.  
  140. }   
  141.  
  142. private string lastname;   
  143.  
  144. public string LastName   
  145.  
  146. {   
  147.  
  148. get { return lastname; }   
  149.  
  150. set { lastname = value; }   
  151.  
  152. }   
  153.  //C#結構體和類的區別
  154. private int age;   
  155.  
  156. public int Age   
  157.  
  158. {   
  159.  
  160. get { return age; }   
  161.  
  162. set { age = value; }   
  163.  
  164. }   
  165.  
  166. //在結構體中不能定義默認的不帶參數的構造函數,只能定義結構體的帶參數的構造函數   
  167.  
  168. public structEmployee(string strFirstNamem, 
  169. string strLastName, int iAge)   
  170.  
  171. {   
  172.  
  173. firstname = strFirstNamem;   
  174.  
  175. lastname = strLastName;   
  176.  
  177. age = iAge;   
  178.  
  179. }   
  180.  
  181. }   
  182.  
  183. }  

(3)按F5鍵運行程序,運行結果如下所示。

類的數據:姓名-Pony Smith 年齡-33

結構體的數據:姓名-Pony Smith 年齡-43

C#結構體和類的區別之源程序解讀

(1)本示例為了說明在傳遞時C#結構體和類的區別,在程序中分別定義了表示員工的類classEmployee類和表示員工的結構體structEmployee,并定義了各自的字段和構造函數。在主程序入口Main方法中,聲明類的實例clsEmpA和clsEmpB,并使用構造函數創建clsEmpA類實例,然后將clsEmpA類實例傳遞給clsEmpB類實例,修改clsEmpB類實例的字段值,最后打印clsEmpA類實例中的字段,查看字段的值是否隨clsEmpB類實例字段的修改而變化。同時,聲明結構體的實例strctEmpA和strctEmpB,并使用構造函數創建strctEmpA結構體實例,然后將strctEmpA結構體實例傳遞給strctEmpB結構體實例,修改strctEmpB結構體實例的字段值,最后打印strctEmpA結構體實例中的字段,查看字段的值是否隨strctEmpB結構體實例字段的修改而變化。程序的流程圖如圖8.1所示。 

(2)C#結構體和類的區別還有一個比較明顯的區別,就是類能夠定義默認的、不帶參數的構造函數,并能在該構造函數中初始化字段。而結構體不允許定義默認的、不帶參數的構造函數。

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

【編輯推薦】

  1. C#結構體的特點淺析
  2. C#結構體數組間的轉化淺析
  3. 解決C#結構體數組間的轉化
  4. C#結構體使用淺析
  5. C#構造函數介紹及分類淺析
責任編輯:仲衡 來源: 百度空間
相關推薦

2009-08-27 16:18:47

C#類C#結構體

2009-08-13 11:18:50

C#結構體

2009-08-13 13:29:04

C#結構體使用

2009-08-13 14:56:46

C#的結構體使用

2009-08-31 15:02:22

C#解析結構體指針

2009-08-13 13:03:52

C#結構體數組

2009-08-21 17:24:06

C# SingleIn

2009-08-17 18:04:49

C# 枚舉

2009-08-06 14:43:10

C# Calculat

2009-08-21 17:24:06

C# SingleIn

2009-08-21 11:31:59

異步和多線程的區別

2009-08-14 11:05:28

C#語言的結構體

2009-08-13 14:46:03

C#結構體定義

2009-09-23 09:36:34

C#數組

2009-08-27 13:37:11

C#類和結構

2009-08-13 17:30:30

C#構造函數

2009-08-10 10:37:17

C#類與結構

2009-08-13 14:24:44

C#結構體構造函數

2009-07-30 18:36:00

C#接口C#抽象類

2009-08-26 09:54:45

C#打印預覽C#打印
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 羞羞在线观看视频 | 99国产精品99久久久久久 | 久久亚洲91 | 日本午夜精品 | 国产一区二区精品在线 | 成人午夜 | 国产精品一区二区免费 | av片在线免费看 | 国产一区二区三区四区区 | 国产福利小视频 | 亚洲视频免费观看 | 国产综合久久久 | 国产欧美一区二区三区久久手机版 | 91视频在线观看 | 久久国色 | 一二三四在线视频观看社区 | 黄色三级免费 | 日本a网站 | 免费黄色的视频 | 欧美在线观看一区二区 | 欧美在线亚洲 | 啪啪毛片 | 久久草在线视频 | 欧美国产亚洲一区二区 | 国产黄色一级电影 | 视频一区二区在线观看 | 国产网站在线免费观看 | 亚洲三区在线 | 久久精品亚洲精品 | 国产精品成人69xxx免费视频 | 在线日韩| 亚洲网站免费看 | 午夜免费网站 | 欧美性高潮 | 精品九九久久 | 亚洲男人的天堂网站 | av在线免费观看网站 | 亚洲精品一区二区三区在线 | 久久精品91| 国产日韩精品一区二区 | www.日本在线播放 |