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

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
C#結(jié)構(gòu)體和類的區(qū)別淺析

C#結(jié)構(gòu)體和類的區(qū)別問題:在C#編程語言中,類屬于引用類型的數(shù)據(jù)類型,結(jié)構(gòu)體屬于值類型的數(shù)據(jù)類型,這兩種數(shù)據(jù)類型的本質(zhì)區(qū)別主要是各自指向的內(nèi)存位置不同。傳遞類的時候,主要表現(xiàn)為是否同時改變了源對象。

成都創(chuàng)新互聯(lián)專注于馬山網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供馬山營銷型網(wǎng)站建設(shè),馬山網(wǎng)站制作、馬山網(wǎng)頁設(shè)計、馬山網(wǎng)站官網(wǎng)定制、微信小程序定制開發(fā)服務(wù),打造馬山網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供馬山網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

C#結(jié)構(gòu)體和類的區(qū)別技術(shù)要點:

◆類在傳遞的時候,傳遞的內(nèi)容是位于托管內(nèi)存中的位置,結(jié)構(gòu)體在傳遞的時候,傳遞的內(nèi)容是位于程序堆棧區(qū)的內(nèi)容。當(dāng)類的傳遞對象修改時,將同時修改源對象,而結(jié)構(gòu)體的傳遞對象修改時,不會對源對象產(chǎn)生影響。

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

C#結(jié)構(gòu)體和類的區(qū)別之實現(xiàn)步驟

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

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

 
 
 
  1. using System;   //C#結(jié)構(gòu)體和類的區(qū)別
  2. using System.Collections.Generic; 
  3. using System.Text; 
  4. namespace ClassAndStruct 
  5. class Program 
  6. static void Main(string[] args) 
  7. //使用帶參數(shù)的構(gòu)造函數(shù)創(chuàng)建員工類的實例 
  8. classEmployee clsEmpA = new
  9. classEmployee("Pony","Smith",43); 
  10. classEmployee clsEmpB = clsEmpA; 
  11. //修改引用數(shù)據(jù) 
  12. clsEmpB.Age = 33; 
  13. //使用帶參數(shù)的構(gòu)造函數(shù)創(chuàng)建員工結(jié)構(gòu)體的實例 
  14. structEmployee strctEmpA =
  15. new structEmployee("Pony", "Smith", 43); 
  16. structEmployee strctEmpB = strctEmpA; 
  17. //修改 
  18. strctEmpB.Age = 33; 
  19. Console.WriteLine("類的數(shù)據(jù):姓名-{0} {1} 年齡-{2}", 
  20. clsEmpA.FirstName,clsEmpA.LastName,clsEmpA.Age); 
  21. Console.WriteLine("結(jié)構(gòu)體的數(shù)據(jù):姓名-{0} {1} 年齡-{2}", 
  22. strctEmpA.FirstName, strctEmpA.LastName, strctEmpA.Age); 
  23. Console.ReadLine(); 
  24. class classEmployee//表示員工的類 
  25. private string firstname; 
  26. public string FirstName 
  27. get { return firstname; } 
  28. set { firstname = value; } 
  29. private string lastname; 
  30. public string LastName 
  31. get { return lastname; } 
  32. set { lastname = value; } 
  33. private int age; 
  34. public int Age 
  35. get { return age; } 
  36. set { age = value; } 
  37. //類的默認構(gòu)造函數(shù),可以在類中重新定義 
  38. public classEmployee() 
  39. firstname = ""; 
  40. lastname = ""; 
  41. age = 0; 
  42.  //C#結(jié)構(gòu)體和類的區(qū)別
  43. //類的帶參數(shù)的構(gòu)造函數(shù),在構(gòu)造類實例的同時給字段賦值 
  44. public classEmployee(
  45. string strFirstNamem, string strLastName, int iAge) 
  46. firstname = strFirstNamem; 
  47. lastname = strLastName; 
  48. age = iAge; 
  49. struct structEmployee//表示員工的結(jié)構(gòu)體 
  50. private string firstname; 
  51. public string FirstName 
  52. get { return firstname; } 
  53. set { firstname = value; } 
  54. private string lastname; 
  55. public string LastName 
  56. get { return lastname; } 
  57. set { lastname = value; } 
  58.  //C#結(jié)構(gòu)體和類的區(qū)別
  59. private int age; 
  60. public int Age 
  61. get { return age; } 
  62. set { age = value; } 
  63. //在結(jié)構(gòu)體中不能定義默認的不帶參數(shù)的構(gòu)造函數(shù),只能定義結(jié)構(gòu)體的帶參數(shù)的構(gòu)造函數(shù) 
  64. public structEmployee(string strFirstNamem,
  65. string strLastName, int iAge) 
  66. firstname = strFirstNamem; 
  67. lastname = strLastName; 
  68. age = iAge; 

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

類的數(shù)據(jù):姓名-Pony Smith 年齡-33

結(jié)構(gòu)體的數(shù)據(jù):姓名-Pony Smith 年齡-43

C#結(jié)構(gòu)體和類的區(qū)別之源程序解讀

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

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

C#結(jié)構(gòu)體和類的區(qū)別的相關(guān)內(nèi)容就向你介紹到這里,希望對你學(xué)習(xí)和了解C#結(jié)構(gòu)體和類的區(qū)別有所幫助。


本文標題:C#結(jié)構(gòu)體和類的區(qū)別淺析
當(dāng)前地址:http://www.5511xx.com/article/cosssjg.html