C#结构体和类的区别浅析

C#结构体和类的区别问题:在C#编程语言中,类属于引用类型的数据类型,结构体属于值类型的数据类型,这两种数据类型的本质区别主要是各自指向的内存位置不同。传递类的时候,主要表现为是否同时改变了源对象。

成都创新互联专注于马山网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供马山营销型网站建设,马山网站制作、马山网页设计、马山网站官网定制、微信小程序定制开发服务,打造马山网络公司原创品牌,更为您提供马山网站排名全网营销落地服务。

C#结构体和类的区别技术要点:

◆类在传递的时候,传递的内容是位于托管内存中的位置,结构体在传递的时候,传递的内容是位于程序堆栈区的内容。当类的传递对象修改时,将同时修改源对象,而结构体的传递对象修改时,不会对源对象产生影响。

◆在一个类中,可以定义默认的、不带参数的构造函数,而在结构体中不能定义默认的、不带参数的构造函数。两者都可以定义带有参数的构造函数,通过这些参数给各自的字段赋值或初始化。

C#结构体和类的区别之实现步骤

(1)创建控制台应用程序项目,命名为“ClassAndStruct”。

(2)打开并编辑Program.cs文件,代码如下所示。

 
 
 
  1. using System;   //C#结构体和类的区别
  2. using System.Collections.Generic; 
  3. using System.Text; 
  4. namespace ClassAndStruct 
  5. class Program 
  6. static void Main(string[] args) 
  7. //使用带参数的构造函数创建员工类的实例 
  8. classEmployee clsEmpA = new
  9. classEmployee("Pony","Smith",43); 
  10. classEmployee clsEmpB = clsEmpA; 
  11. //修改引用数据 
  12. clsEmpB.Age = 33; 
  13. //使用带参数的构造函数创建员工结构体的实例 
  14. structEmployee strctEmpA =
  15. new structEmployee("Pony", "Smith", 43); 
  16. structEmployee strctEmpB = strctEmpA; 
  17. //修改 
  18. strctEmpB.Age = 33; 
  19. Console.WriteLine("类的数据:姓名-{0} {1} 年龄-{2}", 
  20. clsEmpA.FirstName,clsEmpA.LastName,clsEmpA.Age); 
  21. Console.WriteLine("结构体的数据:姓名-{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. //类的默认构造函数,可以在类中重新定义 
  38. public classEmployee() 
  39. firstname = ""; 
  40. lastname = ""; 
  41. age = 0; 
  42.  //C#结构体和类的区别
  43. //类的带参数的构造函数,在构造类实例的同时给字段赋值 
  44. public classEmployee(
  45. string strFirstNamem, string strLastName, int iAge) 
  46. firstname = strFirstNamem; 
  47. lastname = strLastName; 
  48. age = iAge; 
  49. struct structEmployee//表示员工的结构体 
  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#结构体和类的区别
  59. private int age; 
  60. public int Age 
  61. get { return age; } 
  62. set { age = value; } 
  63. //在结构体中不能定义默认的不带参数的构造函数,只能定义结构体的带参数的构造函数 
  64. public structEmployee(string strFirstNamem,
  65. string strLastName, int iAge) 
  66. firstname = strFirstNamem; 
  67. lastname = strLastName; 
  68. age = iAge; 

(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#结构体和类的区别有所帮助。

网站名称:C#结构体和类的区别浅析
转载注明:http://www.shufengxianlan.com/qtweb/news37/113037.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联