2016-09-14 58 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

哦,非常感謝! –