C# 结构与类的异同

C# 结构与类的异同,来源于《C# 高级编程——第七版》

 

Struct

Class

数据类型

用作函数参数时不会改变原值,但由于复制内容,降低性能,所以一般建议使用ref

引用

用作函数参数会改变原值

存储位置

托管堆

继承

不支持继承

总是派生自system.ValueType,还可以派生自任意多个接口。


支持继承

构造函数

系统总是提供默认构造函数

不容许添加无参数的构造函数

若定义了构造函数,则系统不提供构造函数

字段

一般大部分或全部为public

一般由public属性封装

new

不分配内存,仅初始化字段;

也可以不使用new来初始化,手动对字段一个个的初始化

分配内存

字段默认值

不能:public int num=1;

因为默认构造函数把数值字段都初始化为0,把引用类型字段初始化为null,且总是隐式地给出,即使提供了其他带参数的构造函数,也是如此。提供字段的初始值也不能绕过默认构造函数。

可以public int num=1;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值