首页 > 后端开发 > C++ > C#中的参考与价值类型:有什么区别?

C#中的参考与价值类型:有什么区别?

Susan Sarandon
发布: 2025-02-02 10:01:09
原创
850 人浏览过

Reference vs. Value Types in C#: What's the Difference?

深入理解 C# 中的引用类型和值类型

C# 编程中,理解引用类型和值类型的区别至关重要。虽然两者都存储数据,但它们的行为和用法却大相径庭。

引用类型

C# 中的引用类型是非基本类型,例如接口、委托,甚至自定义类。它们持有对类型实例的引用,而不是实际的值本身。这意味着两个相同引用类型的变量可以指向同一个底层对象。

值类型

另一方面,值类型,例如整数、布尔值和浮点数,直接存储它们的值。当值类型变量赋值给另一个变量时,会创建一个完整的副本。对一个变量的更改不会影响另一个变量。

主要区别

下表总结了引用类型和值类型的主要区别:

特性 引用类型 值类型
内存地址 实际数据
复制行为 仅复制引用 复制整个值
赋值 分配不同的地址 分配相同的值
标识 对象可以共享标识 对象具有唯一标识
空值 可以为空 不能为空(可空类型除外)

实际示例

考虑以下代码:

<code class="language-csharp">int number1 = 5;
int number2 = number1;

// 修改 number1
number1++;

// number2 保持不变
Console.WriteLine(number2); // 输出:5</code>
登录后复制

在此示例中,number1 是值类型,因此其值的副本被赋值给 number2。修改 number1 不会影响 number2,因为它们是具有各自值的两个独立变量。

现在,让我们来看一个引用类型的示例:

<code class="language-csharp">Person person1 = new Person();
person1.Name = "John";
Person person2 = person1;

// 修改 person1
person1.Name = "Mary";

// person2 反映了更改
Console.WriteLine(person2.Name); // 输出:Mary</code>
登录后复制

在这种情况下,Person 是引用类型,因此 person1 和 person2 指向同一个对象。修改 person1 会更改底层对象,这会反映在 person1 和 person2 中。

以上是C#中的参考与价值类型:有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板