C# 值和引用类型

标签 c# value-type reference-type

请看下面提到的以下几行代码:

byte[] a = { 1, 2, 3, 4 };
byte[] b = a; // b will have all values of a.
a = null; 

在 C# 中 byte[] 是引用类型。现在,如果第 3 行中的 a = null,那么为什么 b 不是 null,因为它是一个引用类型。如果我们检查 b,它仍将具有 a 的所有值。

最佳答案

首先,您在内存中的某处创建一个数组,例如从地址 1000 开始。 a是一个引用,它不包含数组,它包含地址1000b 也包含这个地址。在第 3 行中,您将 a 改为指向 null,但 b 仍指向地址为 1000 的数组>.

您编辑了引用 (a),您没有编辑它引用的对象 ({1,2,3,4})。

关于C# 值和引用类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23107941/

相关文章:

c# - 如何将微秒和纳秒添加到日期时间?

arrays - 如果数组是值类型并因此被复制,那么它们为什么不是线程安全的?

c# - 我可以在这里将引用类型视为值类型吗,还是需要克隆?

c# - 将包含类实例的结构体的变量分配给另一个变量

java - 值为 null 的引用类型类型?

c# - C#/.NET 中的图像重命名程序

c# - FluentValidation 如何创建公共(public)部分

c# - 如何使用linq to sql在asp.net中显示过滤后的数据

c# - 关于 .Net 中通用字典中引用类型键的快速问题

.net - typeof(System.Enum).IsClass == false