c# 值类型与引用类型的区别(含例子)

本文详细介绍了C#中的值类型和引用类型,包括它们的区别、特性和在内存中的分配方式。值类型直接存储数据,如整数、浮点数等,存储在栈中,效率高,不能为null。引用类型存储对象引用,分配在堆中,多个变量可引用同一对象。通过示例代码展示了值类型和引用类型在变化时的影响差异。
摘要由CSDN通过智能技术生成

c# 值类型与引用类型的区别

参考资料:《C#程序设计》

1、首先我们先了解一下c#的基本数据类型包含哪些。
c#的数据类型可分为两种,分别是值类型和引用类型。关系如下图:
在这里插入图片描述
2、什么是值类型呢?
值类型直接存储数据值,它主要包括简单类型和复合类型两种,其中,简单类型是程序中使用的最基本类型,主要包括整数类型、浮点类型、布尔类型和字符类型等4种。值类型在栈中进行分配,因此效率很高,使用值类型主要目的是为了提高性能。值类型具有如下特性。
》值类型变量都存储在栈中。
》访问值类型变量时,一般都是直接访问其实例。
》每个值类型变量都有自己的数据副本,因此对一个值类型变量的操作不会影响其他变量。
》值类型变量不能为null,必须具有一个确定的值。

3、什么又是引用类型呢?
引用类型是构建C#应用程序的主要对象类型数据,引用类型的变量又称为对象,可存储对实际数据的引用。C#支持两个预定义的引用类型object和string。
在应用程序执行的过程中,引用类型使用new关键字创建对象实例,并存储在堆中。堆是一种由系统弹性配置的内存空间,没有特定大小及存活时间,因此可以被弹性地运用于对象的访问。
引用类型具有如下特征。
 必须在托管堆中为引用类型变量分配内存。
 在托管堆中分配的每个对象都有与之相关联的附加成员,这些成员必须被初始化。
 引用类型变量是由垃圾回收机制来管理的。
 多个引用类型变量可以引用同一对象,这种情形下,对一个变量的操作会影响另一个变量所引用的同一对象。
 引用类型被赋值前的值都是null。
所有被称为“类”的都是引用类型,主要包括类、接口、数组和委托等。例如:

Student student1=new Student();
Student student1=student1;

4、他们的区别是什么?
先上图,如下

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值