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

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

新聞中心

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

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

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

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

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

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

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

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

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

 
 
 
  1. using System;   //C#結(jié)構(gòu)體和類(lèi)的區(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)建員工類(lèi)的實(shí)例 
  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)體的實(shí)例 
  14. structEmployee strctEmpA =
  15. new structEmployee("Pony", "Smith", 43); 
  16. structEmployee strctEmpB = strctEmpA; 
  17. //修改 
  18. strctEmpB.Age = 33; 
  19. Console.WriteLine("類(lèi)的數(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//表示員工的類(lèi) 
  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. //類(lèi)的默認(rèn)構(gòu)造函數(shù),可以在類(lèi)中重新定義 
  38. public classEmployee() 
  39. firstname = ""; 
  40. lastname = ""; 
  41. age = 0; 
  42.  //C#結(jié)構(gòu)體和類(lèi)的區(qū)別
  43. //類(lèi)的帶參數(shù)的構(gòu)造函數(shù),在構(gòu)造類(lèi)實(shí)例的同時(shí)給字段賦值 
  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)體和類(lèi)的區(qū)別
  59. private int age; 
  60. public int Age 
  61. get { return age; } 
  62. set { age = value; } 
  63. //在結(jié)構(gòu)體中不能定義默認(rèn)的不帶參數(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鍵運(yùn)行程序,運(yùn)行結(jié)果如下所示。

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

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

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

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

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

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


當(dāng)前題目:C#結(jié)構(gòu)體和類(lèi)的區(qū)別淺析
網(wǎng)頁(yè)URL:http://m.5511xx.com/article/cosssjg.html