网站大量收购独家精品文档,联系QQ:2885784924

[c中结构和类的六点区别.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[c中结构和类的六点区别

C#结构和类的六点区别 引言 1 区别一:存储类型 3 堆和栈: 3 结构和类的存储类型: 3 区别二:继承性 4 区别三:初始化 5 区别四:构造函数 5 区别五:析构函数 7 区别六:关键字 7 类和结构的使用选择: 7 参考: 8 1、一览表: 8 2、结构和类的区别: 8 3、结构和类的异同: 8 4、源代码: 8 Struct,cs 8 Class.cs 10 Program.cs 13 引言 我们先来看一个例子: 例1:类和结构的基本定义 上面的两个图片一个定义的是类,另一个是结构的定义。从表面上来看,两中数据类型的定义基本没什么区别,类里面有的成员结构都能有,事实上也确实如此。在c#中,两者在本质上都属于数据结构,封装着一组整体作为一个逻辑单位的数据和行为。?数据和行为是该类或结构的“成员”,它们包含各自的方法、属性和事件等(本主题后面列出了这些内容)。结构和类有很大的相似性: 都是container类型,这表示它们可以包含其他数据类型作为成员。他们可以包含的内容基本相同:字段、构造函数、方法、属性、常量、事件、索引器、运算符、嵌套类型等; 成员都可以分为静态和非静态,成员的类型、访问方式可以互不相同; 方法(或称函数)都可以进行重载、复写等操作; 都派生于System.Object; ?结构定义函数和类中定义函数完全相同; 都能进行封装; 都能响应接口; 都可以通过泛型定义; 都可以声明和触发事件,而且两者都可以声明委托(Delegate); 方法或成员的调用方式、对象的初始化都相同; 默认情况下所有的字段、方法都是私有的 结构与类在语法上有着很大的相似,但是两者也存在着很明显的区别,具体表现在下面六个方面: 区别一:存储类型 堆和栈: “栈”(stack)和“堆”(heap)这两个词来源于“运行时”(runtime)对内存进行组织的方式: 栈内存就像一系列堆叠越高的箱子。调用方法时,它的每个参数都被放入一个箱子,并将这个箱子放到栈的最顶部。每个局部变量也同样分配到一个箱子,并同样放到栈的最顶部。方法结束之后,方法的所有箱子都会从栈中移除。 堆内存则像散布在房间里的一大堆箱子,而不像栈那样,每个箱子都严格地叠置在另一个箱子上方。每个箱子都有一个标签,它标记了这个箱子是否正在使用。创建一个新对象时,“运行时”会查找一个空箱子,并把它分配给对象。对对象的引用则存储在栈上的一个局部变量中。“运行时”将跟踪每个箱子的引用数量(记住,两个变量可能引用同一个对象)。一旦最后一个引用消失,运行时就将箱子标记为“未使用”。将来某个时候,会清除箱子里的东西,使之能真正重用。 结构和类的存储类型: 结构是值类型数据,存储在栈(stack)中。结构进行数据复制的时候,是将原来数据进行备份。创建结构时,结构赋值到的变量保存该结构的实际数据。?将结构赋给新变量时,将复制该结构。?因此,新变量和原始变量包含同一数据的两个不同的副本。?对一个副本的更改不影响另一个副本。 如:对例1中定义的结构作如下操作: // 使用结构 static void UseStruct() { Date labourDay = new Date(5, 1); Date yaoMingBirth = labourDay; labourDay.ReadDate(); yaoMingBirth.ReadDate(); yaoMingBirth.Change(1980, 11, 8); labourDay.ReadDate(); yaoMingBirth.ReadDate(); } 显示结果:修改其中一个变量的值,不会影响和它同一个拷贝的另外一个变量。 类是引用类型数据,存储在堆(heap)中和栈(stack)中,堆中存储的是真实的数据,栈中存储的是数据在堆中的地址。就像是在仓库里面放苹果,我们把放苹果的箱子编号,再将编号记录在一个本子上面,这个本子就是栈,仓库就是堆。? 如:对例1中定义的类进行如下操作: // 使用类 static void UseClass() { Birthday myBirth = new Birthday(1987, 6, 12); Birthday liliBirth = myBirth; myBirth.ReadDate();

文档评论(0)

huhongjun + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档