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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 盘晟 中级黑马   /  2013-5-23 01:15  /  2440 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 盘晟 于 2013-6-18 21:36 编辑

如题!

5 个回复

倒序浏览
1. Class可以被实例化,属于引用类型,是分配在内存的堆上的;
2. 类是引用传递的;
3. Struct属于值类型,是分配在内存的栈上的;
4. 结构体是复制传递的.
回复 使用道具 举报
楼上说的 很详细,关于 值类型 和 引用类型区别 应该是 值类型和 引用类型的区别,
举个简单的例子 定义 a=1;b=0; 然后 将 b=a;a=2; 这时候 a=2,b=1;(→_→ 这是 值类型)
手动 定义一个 引用类型,例如 Class Test{ public int Value{ set;get;} }
Test a=new Test{Value =1 };  Test b=new Test{Value=0};   将 b=a;a= new Test{Value =2 }; 这时候 a.Value=2,b.Value=2; (只是引用类型)

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

回复 使用道具 举报
Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的.
回复 使用道具 举报
结构不能声明默认构造函数(没有参数的构造函数)或析构函数。结构的副本由编译器自动创建和销毁,因此不需要使用默认构造函数和析构函数。实际上,编译器通过为所有字段赋予默认值(参见默认值表)来实现默认构造函数。结构不能从类或其他结构继承。
结构是值类型 -- 如果从结构创建一个对象并将该对象赋给某个变量,变量则包含结构的全部值。复制包含结构的变量时,将复制所有数据,对新副本所做的任何修改都不会改变旧副 本的数据。由于结构不使用引用,因此结构没有标识 -- 具有相同数据的两个值类型实例是无法区分的。C# 中的所有值类型本质上都继承自 ValueType,后者继承自 Object。编译器可以在一个称为装箱的过程中将值类型转换为引用类型。
回复 使用道具 举报
从职能观点来看,class表现为行为;而struct常用于存储数据。class支持继承,可以继承自类和接口;而struct没有继承性,struct不能从class继承,也不能作为class的基类,但struct支持接口继承。class可以声明无参构造函数,可以声明析构函数;而struct只能声明带参数构造函数,且不能声明析构函数。因此,struct没有自定义的默认无参构造函数,默认无参构造器只是简单地把所有值初始化为它们的0等价值。

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马