c#:当我初始化这样的布尔数组时会发生什么
本文关键字:数组 什么 布尔 初始化 | 更新日期: 2023-09-27 18:31:07
我进入 C#,我对我学习的资源示例有点困惑。它是关于布尔数组的声明和初始化的,id 想知道代码中的哪个点会发生什么:
bool[][] myBools = new bool[2][];
myBools[0] = new bool[2];
myBools[1] = new bool[1];
myBools[0][0] = true;
//myBools[0][1] = false;
myBools[1][0] = true;
Console.WriteLine("myBools[0][0]: {0}, myBools[1][0]: {1}", myBools[0][0], myBools[1][0]);
我声明了一个未知大小的二维布尔数组 - 在同一行中,我用 2 个布尔数组初始化数组数组。
那一刻我在阵列中有什么?C# 不允许读出这些值。(我想我现在有一个包含 2 个成员的array_main包含未初始化的! 布尔arrays_members这是正确的吗?所以一个包含 2 个成员的 len 2 数组是包含 NULL 的 unkown 长度的布尔数组?
在第 2 行和第 3 行中,我用布尔数组初始化array_members,第一个成员的长度为 2,第二个成员的长度为 1。这是对的吗?
之后它很简单,C喜欢。
我可以使用逻辑,但我想知道幕后发生了什么。
我声明一个未知大小的二维布尔数组
好吧,你声明了一个数组数组。这不是一个"真正的"多维数组 - 那将是bool[,] myBools
.值得了解交错数组(元素类型为另一种数组类型的数组)和矩形数组(其中有一个数组对象,但具有多个维度)之间的区别。
那一刻我在阵列中有什么?
您有两个空引用。这很容易看出:
bool[][] myBools = new bool[2][];
bool[] array = myBools[0];
Console.WriteLine(array == null); // true
基本上,您只是创建一个数组,其中元素类型是引用类型。可以把它想象成你有一个名为 BoolArray
的类,并且你创建了:
BoolArray[] myBools = new BoolArray[2];
然后,您会期望这两个元素的值均为 null,因为这是所有引用类型的默认值,对吗?嗯,这正是你所拥有的...只是数组类型是bool[]
而不是一个简单的类。
在第 2 行和第 3 行中,我用布尔数组初始化array_members,第一个成员的长度为 2,第二个成员的长度为 1。这是对的吗?
是的,没错。