如何获取数组中的元素数量,Extension Method Count()和Length给出了数组的大小

本文关键字:数组 Length Count Method 获取 何获取 元素 Extension | 更新日期: 2023-09-27 17:58:45

Hi我试图找到数组中的元素数量

byte[] salt = new byte[32];

现在我只提到了大小32,所以数组的Length属性和枚举的计数方法将给我32

即使我将使用for或foreach或任何其他循环结构对此数组salt进行迭代,它也将迭代32次,并且在每个索引上的值为0(即字节的默认值)

现在假设我这样做:

for (int i = 0; i < 5 ; i++)
        {
            salt[i] = 4-i;
        }

我想知道从索引0开始,数组中顺序插入了多少个元素。这里你可能会说,你是不是骗了你迭代了5次,你知道数字是5,但我在其中有大量的循环和其他逻辑(将前缀附加到另一个字节数组)。*我的问题是,还有其他内置函数可以给我这个数字5*即使我迭代并检查第一个默认值,并在那里中断循环并获得计数,但可能最后插入的值是0,就像上面的salt[4]是0一样,所以迭代会给我计数4,这是不正确的。如果我没有错的话,我认为当我们声明大小为32的数组时,32个以上的连续内存字节是保留的,您可以自由插入0-31的任何索引,您有责任跟踪在哪里、如何以及有多少元素被分配给数组。我希望您明白我的意思,并提前感谢您的帮助。

如何获取数组中的元素数量,Extension Method Count()和Length给出了数组的大小

数组是一个数组,在.NET中,它在分配时被初始化。一旦初始化,给定的值是未初始化还是只是0的问题就不可能检查了。0就是0。

然而,你可以通过几种方式绕过它。您可以像@SLaks建议的那样使用List<int>来动态分配列表,该列表只使用您想要的元素进行初始化。

也可以使用,而不是int的数组和int?的数组,因此null的值与0不同。

简单的答案是你不能,数组包含32个整数,.net框架不在乎其中是否有一些是0,所以你可以创建自己的函数来计算数组中有多少整数不同于0,或者在为数组元素赋值时保持"count"或类似的东西。

或者,您可以使用另一个容器,例如列表,并从中动态添加或删除整数。

好的,当您将数组定义为int[]myArray=int[32]时;你是说,我有32分。不是,为我创建32个int的空间,我稍后会填写。这就是为什么计数给你32。

如果你想要一些你可以真诚地添加到并调整大小的东西,你需要使用一个列表(或它的亲属之一。

如果你想为列表设置一个"cap",我发现:c#中的最大容量集合