如何获取数组中的元素数量,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的任何索引,您有责任跟踪在哪里、如何以及有多少元素被分配给数组。我希望您明白我的意思,并提前感谢您的帮助。
数组是一个数组,在.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#中的最大容量集合