c#引用类型和值类型

结构体:两个变量指向同一个值的情况是存在的,因此对这两个变量的任意一个进行操作,其结果必然会影响另一个
 对于结构体而言,直接包含他的数值,每个结构体都保存一份自己的数据,修改每一个结构的数据都不会对其他结构的数据造成影响
 值类型:直接将内存存储在栈内,由系统自动释放资源的数据类型.
 整型:Int; 长整型: long; 浮点型: float; 字符型: char; 布尔型: bool; 枚举:enum; 结构:struct;
在C#中所有的值类型都继承自:System.ValueType
 基于值类型的变量直接包含值。 将一个值类型变量赋给另一个值类型变量时,将复制包含的值。
 引用类型:由类型的实际值引用(类似于指针)表示的数据类型
 (1)引用被创建的同时必须被初始化(指针则可以在任何时候被初始化)。
(2)不能有NULL引用,引用必须与合法的存储单元关联(指针则可以是NULL)。
(3)一旦引用被初始化,就不能改变引用的关系(指针则可以随时改变所指的对象)。
以下示例程序中,k被初始化为i的引用。
语句k = j并不能将k修改成为j的引用,只是把k的值改变成为6。
由于k是i的引用,所以i的值也变成了6。
int i = 5;
int j = 6;
int &k = i;
k = j; // k和i的值都变成了6;

 值类型与引用类型的区别:
 1、与引用类型变量的赋值不同,引用类型变量的赋值只复制对对象的引用,而不复制对象本身。
2、所有的值类型均隐式派生自SystemValueType。
3、与引用类型不同,不能从值类型派生出新的类型。但与引用类型相同的是,结构也可以实现接口。
4、与引用类型不同,值类型无法包含null值。但是,可以为 null 的类型功能允许值类型分配给null。
5、每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值。
 结构体和类的区别:
1、结构体关键字是struct 类的关键字是class
 2、结构体不可以在声明时直接对字段初始化而类可以
 3、结构体无论有没有声明构造函数,默认构造函数一直存在,而类中一旦声明构造函数,编译器都不在提供默认构造函数
 4、结构体不能显示的声明无参的默认构造函数
 5、结构体中的构造函数必须为所有的字段初始化
 6、结构体不能被继承,也不能使用关键字abstract或sealed关键字
 7、结构体是值类型,类是引用类型
 8、结构体不能定义析构函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值