c#将数组重置为初始值

本文关键字:数组 | 更新日期: 2023-09-27 18:07:10

假设我有一个员工工资数组,按平均、最高、最低的顺序排列:

int[] wages = {0, 0, Int32.MaxValue};

上面的代码是初始化的,所以当我找到最大值时,我可以与0进行比较,任何高于现有值的值都将击败它并替换它。所以0就可以了。看看最小值,如果我把它设为0,就有问题了。比较工资(都大于0)并将最低工资替换为最低工资是不可能的,因为没有一个工资低于0值。所以我用了Int32。MaxValue,因为它保证每个工资将低于此值。

这只是一个例子,但在其他情况下,将数组重置回其初始化的内容会很方便。c#中有这样的语法吗?

编辑:@Shannon Holsinger找到了一个答案:wages = new int[] {0, 0, Int32.MaxValue};

c#将数组重置为初始值

简短的回答是,没有内置的方法来做到这一点。框架不会自动跟踪你的数组的初始状态,只是它的当前状态,所以它没有办法知道如何重新初始化到它的原始状态。你也可以手工做。具体的方法取决于你的数组最初初始化为什么:

        // Array will obviously contain {1, 2, 3}
        int[] someRandomArray = { 1, 2, 3 };
        // Won't compile
        someRandomArray = { 1, 2, 3 };
        // We can build a completely new array with the initial values
        someRandomArray = new int[] { 1, 2, 3 };
        // We could also write a generic extension method to restore everything to its default value
        someRandomArray.ResetArray();
        // Will be an array of length 3 where all values are 0 (the default value for the int type)
        someRandomArray = new int[3];

ResetArray扩展方法如下:

// The <T> is to make T a generic type
public static void ResetArray<T>(this T[] array)
    {
        for (int i = 0; i < array.Length; i++)
        {
            // default(T) will return the default value for whatever type T is
            // For example, if T is an int, default(T) would return 0
            array[i] = default(T);
        }
    }