2016-09-14 398 views
0

可以说我有雇员工资的平均,最大的顺序阵列,和分钟:C#重置一个数组到它的初始化值?

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

上面的代码被initalized使得随着林找到最大我可以做比较,以0任何高于现有价值的东西都会击败它并取而代之。所以0在这里工作正常。看最小,如果我将它设置为0,我会遇到问题。比较工资(全部大于0)和用最低工资代替最低工资是不可能的,因为没有工资低于0值。所以相反,我使用Int32.MaxValue,因为它保证每个工资都低于此值。

这只是一个例子,但也有其他一些地方可以很方便地重置和排列回它的初始化内容。在c#中有这个语法吗?

编辑:@Shannon霍尔辛格找到了答案有: wages = new int[] {0, 0, Int32.MaxValue};

+0

我觉得工资= {0,0,Int32.MaxValue };是关于最简单的方法。如果工资具有类范围,则可以使用名为resetWages()或其他方法的方法。 –

+0

@ShannonHolsinger,当我这样做时,它讨论我的格式。它不喜欢大括号或逗号。刚刚找到一个名为wages.Initialize()的函数;并且想知道这是我寻找的 –

+0

不,数组不保持“初始化状态”和“当前状态”。这只是一个“现状”。 – itsme86

回答

0

简短的回答是,有没有这样做的内置方式。该框架不会自动跟踪您的数组的初始状态,只是它的当前状态,因此无法知道如何将其重新初始化为原始状态。你可以手动做到这一点。这个确切的方法取决于你的阵列首先初始化为:

 // 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); 
     } 
    } 
+0

你介意解释一下是什么和默认的(T)是什么? –

+0

@CapnJack 是为了使其通用。默认(T)返回T类型的默认值。例如,如果T是一个int,则默认值(T)将返回0. – EJoshuaS

+0

哦,非常感谢! –