如何为整个数组赋值0

Loy*_*yal 23 c# arrays

我有一个阵列.int[] array = new int[10];.我想在不使用循环的情况下将'0'分配给整个数组意味着0将存储在所有索引中.我该怎么做

Ser*_*kiy 27

创建之后,所有数组项都将具有默认值,对于int,该值为0.所以,你不需要在这里做任何事情.

从数组(C#编程指南):

数值数组元素的默认值设置为零,引用元素设置为null.


也来自C#规范12.2数组创建

由array-creation-expression创建的数组元素始终初始化为其默认值.

5.2默认值

对于value-type的变量,默认值与value-type的默认构造函数计算的值相同

4.1.2默认构造函数

对于sbyte,byte,short,ushort,int,uint,long和ulong,默认值为0.


但在分配其他值后,我希望所有索引再次为0,那么我该怎么做呢?

更新:您可以使用Array.Clear:

根据元素类型,将Array中的元素范围设置为零,为false或为null.

在你的情况下:

Array.Clear(array, 0, array.Length);
Run Code Online (Sandbox Code Playgroud)

还要考虑使用List<int>而不是数组 - 它允许动态添加/删除项目.

  • @Loyal如果你不想循环,那么创建新数组是不错的选择.还要考虑使用`List <int>`而不是数组.这将允许您在需要时清除列表 (2认同)

Son*_*nül 13

你根本不需要做任何事情.

由于int是值类型,因此所有元素都初始化0为默认值.

从 Arrays (C# Programming Guide)

数值数组元素的默认值设置为零,引用元素设置为null.


好的,如果我想将它分配给3那么我该怎么做?

你可以使用for循环来分配它们;

int[] array = new int[10];
for(int i = 0; i < array.Length; i++)
    array[i] = 3;
Run Code Online (Sandbox Code Playgroud)

如果要返回其默认值(0在本例中为),可以创建新数组,也可以使用Array.Clear类似方法;

Array.Clear(array, 0, array.Length);
Run Code Online (Sandbox Code Playgroud)

如果您确实不想使用任何循环,则可能需要使用List<int>数组.它具有更多功能,并创建一个干净的列表(没有任何默认值).

  • @Downvoter至少要发表评论所以我可以看到我可能出错的地方? (4认同)