A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘欢 中级黑马   /  2013-4-17 22:12  /  1884 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘欢 于 2013-4-18 11:04 编辑

感觉结构和类差不多,两个的区别能不能具体点呢,什么情况用哪种效率?请赐教。

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

4 个回复

倒序浏览
结构 我们可以理解为他是一种面向过程的类型    而类是面向对象的
另外结构是值传递,而类是引用传递

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
类:类是引用类型在堆上分配,类的实例进行赋值只是复制了引用
都指向同一段实际对象分配的内存类有构造和析构函数类可以继承和被继承结构:结构是值类型在栈上分配(虽然栈的访问速度比较堆要快,但栈的资源有限放),结构的赋值将分配产生一个新的对象。
结构没有构造函数,但可以添加。
结构没有析构函数结构不可以继承自另一个结构或被继承,但和类一样可以继承自接口

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
相同点
结构和类在以下方面相同:
1.两者都属于“容器”类型,表示它们可以包含其他类型作为成员。
2.两者都具有成员,成员可以包括构造函数、方法、属性、字段、常数、枚举、事件和事件处理程序。
3.两者的成员都具有单独的可访问性。例如,一个成员可以声明为 Public,而另一个可以声明为 Private。
都可实现接口。
4都有共享的构造函数,有或没有参数。
5两者都可以公开默认属性,只要该属性至少带有一个参数。
6两者都可以声明和引发事件,而且两者都可以声明委托

不同点
结构和类在以下方面有所不同:
1结构是值类型,而类是引用类型。
2结构使用堆栈分配,类使用堆分配。
3所有的结构成员都默认为 Public;类变量和常量默认为 Private,而其他的类成员默认为 Public。类成员的这一行为提供与 Visual Basic 6.0 默认值系统的兼容。
4结构必须至少具有一个非共享变量或事件成员;而类可以完全是空的。
5结构成员不能声明为 Protected,类成员可以。
6只有 Shared Sub结构过程才能处理事件,并且只能使用 AddHandler语句;而任何类过程都可以处理事件,并且可以使用 Handles关键字或 AddHandler语句。
7结构变量声明不能指定初始值、New关键字或数组初始大小,类变量声明可以。
8结构从 ValueType类隐式继承,不能从其他类型继承,类可以从除 ValueType 之外的其他任何类继承。
9结构是不可继承的;而类可以继承。
10结构从不终止,所以公共语言运行库 (CLR) 从不在任何结构上调用 Finalize方法,类可由垃圾回收器终止,当检测到没有剩下的活动引用时,垃圾回收器将在类上调用 Finalize。
11结构不需要构造函数;而类需要。
12结构仅当没有参数时可以有非共享的构造函数;类无论有没有参数都可以。
13每一个结构都有不带参数的隐式公共构造函数。此构造函数将结构的所有数据成员初始化为默认值。不能重定义此行为。

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
看来还得自己慢慢消化  多谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马