C# 中值类型和引用类型的解释和对比2025年3月17日 | 阅读 8 分钟 在 C# 中,值类型和引用类型是基本的数据类型,它们各自具有不同的行为和用途。这些类型决定了变量在内存中的存储位置以及赋值时的行为。在本文中,我们将讨论 C# 中值类型和引用类型之间的区别。但在讨论它们之间的区别之前,我们必须了解 C# 中的值类型和引用类型。 什么是值类型?值类型用于在堆栈上存储内存中的数据。当一个特定的值被赋给变量,或者一个值作为参数传递给它时,会创建一个该值的副本。这种值类型继承自System.ValueType。在这里,每个变量都有自己的数据副本。值类型直接包含值。 值类型又分为两种:预定义或内置值类型和用户定义值类型。预定义类型存在于 C# 编程语言中。它们是数值、字符和十进制类型。 数值类型包括整型和浮点型。整型又分为 short、int 和 long。字符类型用于在堆栈上存储单个字符,有时也用于存储布尔类型。 示例让我们举一个例子来说明 C# 中的预定义值类型。 输出 ![]() 用户定义值类型用户定义类型是由用户为特定需求创建的值类型。重要的用户定义类型是结构体(struct)和枚举(enum)。'struct' 关键字用于创建结构体。'enum' 关键字用于创建枚举,结构体类似于类。结构体包含数据成员和成员函数,但它们比类更轻量。枚举由一组命名常量组成。它使代码或程序更具可读性和可维护性。 示例 2让我们再举一个例子来说明 C# 中的结构体。 输出 ![]() 示例 3让我们再举一个例子来说明 C# 中的枚举。 输出 ![]() 什么是引用类型?引用类型用于在托管堆上存储数据。引用类型携带指向实际数据存储所在内存位置的指针。这种引用类型继承自System.Object。当我们把一个引用类型变量赋给另一个变量时,它会创建一个指向相同数据的新的指针,而不是创建一个新的数据副本。堆上会有许多指针或引用指向同一个对象。 它们也分为两种:内置引用类型或预定义引用类型和用户定义引用类型。 内置引用类型内置引用类型又有不同的类型。其中一些是数组、字符串、对象、字典、线程、流等。众所周知,数组代表同一种数据类型的元素集合。字符串是 C# 中不可变的字符序列。对象是 C# 中所有其他类型的基类,它们可以保存引用类型。流是字节序列。 示例让我们举一个例子来演示 C# 中的预定义引用类型。 输出 ![]() 用户定义引用类型用户定义引用类型包括类、接口和委托。类包含成员和成员函数。它们用于定义具有属性和行为的对象。接口定义了类必须实现的契约。委托代表对方法的引用。 示例让我们举一个例子来演示 C# 中的用户定义引用类型。 输出 ![]() C# 中值类型与引用类型的相似之处C# 中的值类型和引用类型之间有几个相似之处。其中一些如下:
具有方法的示例值类型 具有方法的示例引用类型
示例
示例
C# 中值类型与引用类型的区别C# 中的值类型和引用类型之间有几个区别。其中一些如下:
结论总之,本文介绍了 C# 中的值和引用类型。本文详细解释了值类型和引用类型的用法。 C# 中的值类型存储在堆栈上,而引用类型存储在堆上。值类型代表独立的值,而引用类型保存指向存储实际数据的内存位置的引用。值类型由于堆栈分配而更快,而引用类型是堆分配。通过? 修饰符,值类型和引用类型都可以为 null。只有引用类型可以直接参与继承。 |
我们请求您订阅我们的新闻通讯以获取最新更新。