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