gpt4 book ai didi

C#对象类型数组

转载 作者:行者123 更新时间:2023-12-05 09:33:03 26 4
gpt4 key购买 nike

假设我们声明了一个大小为 3 的 Person 类型的数组:

Person[] arr = new Person[3];

在那之后,为什么我还要做:

arr[i] = new Person();

我以为 new Person[3] 在内存中创建了 3 个 person ,而 arr 会指向第一个。谢谢!

最佳答案

I thought new Person[3] creates 3 persons in memory, and arr will point to the first one.

不,它只是创建一个数组,可以存储对 3 个人的引用(假设Person 是一个类而不是一个结构)。毕竟,C# 如何知道究竟您想在其中存储什么?它可以是对 Person 的引用,它可以是空引用,它可以是对 Student(Person 的子类)的引用,......并且 Person 甚至可能没有构造函数参数!

简而言之,这:

Person[] arr = new Person[3];

创建这个:

+--------+--------+--------+
| null | null | null |
+--------+--------+--------+

现在您可以用值填充该数组,例如

var john = new Person("John Doe");
arr[0] = john;
arr[1] = john;
arr[2] = new Student("Mike", "Computer Science");

导致:

+--------+--------+--------+
| ref | ref | ref |
+--------+--------+--------+
| | |
| +--+ +------+
| | |
v v v
+-------------+ +------------+
| Person | | Student |
+-------------+ +------------+
| John Doe | | Mike |
+-------------+ | Comp.Sci. |
+------------+

关于C#对象类型数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67544480/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com