【问题标题】:How to assign 0 to whole array如何将0分配给整个数组
【发布时间】:2014-03-06 07:39:51
【问题描述】:

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

【问题讨论】:

    标签: c# arrays


    【解决方案1】:

    创建后,数组的所有项都将具有默认值,即 int 为 0。所以,你不需要在这里做任何事情。

    来自Arrays (C# Programming Guide)

    数值数组元素的默认值设置为零,并且 参考元素设置为空。


    同样来自 C# 规范 12.2 Array creation

    由数组创建表达式创建的数组元素总是 初始化为它们的默认值。

    5.2 Default values

    对于值类型的变量,默认值与 由值类型的默认构造函数计算的值

    4.1.2 Default constructors

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


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

    更新:您可以使用Array.Clear

    将 Array 中的元素范围设置为零、false 或 null, 取决于元素类型。

    在你的情况下:

    Array.Clear(array, 0, array.Length);
    

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

    【讨论】:

    • 是的,你是对的,默认情况下所有索引都初始化为 0,但在分配其他值后,我希望所有索引再次为 0,那我该怎么做呢?
    • 我将创建多少个数组?
    • @Loyal 如果您不想循环,那么创建新数组是不错的选择。还可以考虑使用List<int> 而不是数组。这将允许您在需要时清除列表
    • 这对uint 也适用吗?
    【解决方案2】:

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

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

    来自Arrays (C# Programming Guide)

    数值数组元素的默认值设置为零,并且 参考元素设置为空。


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

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

    int[] array = new int[10];
    for(int i = 0; i < array.Length; i++)
        array[i] = 3;
    

    如果你想返回它们的默认值(在这种情况下是0),你可以创建一个新数组或者你可以使用Array.Clear这样的方法;

    Array.Clear(array, 0, array.Length);
    

    如果您真的不想使用任何循环,您可能需要使用List&lt;int&gt; 来代替数组。它有更多的功能,它创建了一个干净的列表(没有任何默认值)。

    【讨论】:

    • 哈哈甚至同样的报价:)
    • @SergeyBerezovskiy 我用添加 at all 来改变它,所以你不能怪我先生:)
    • 不,我不是在责怪你。但是我在为数组赋值之后我希望我的数组恢复为 0。那我该怎么做呢?
    • @Loyal 如果你想让它们归零创建一个新数组,如果你想让它们全部变成别的东西,你需要一个循环
    • @Downvoter 至少愿意发表评论,这样我才能知道我可能错在哪里?
    猜你喜欢
    • 1970-01-01
    • 2021-07-04
    • 2019-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-13
    • 2020-09-14
    • 2016-07-10
    相关资源
    最近更新 更多