2016-09-14 2 views
0

내가 평균, 최대의 순서로 직원 임금의 배열이 있다고 가정하자 및 분 : 임 최대를 찾는 나는 0으로 비교를 할 수 있도록 위의 코드가 initalized됩니다배열을 초기화 된 값으로 재설정 하시겠습니까?

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

기존의 가치를 초과하는 것은 그것을 치고 대체 할 것입니다. 그래서 0은 여기에서 잘 작동합니다. 분을 보면, 0으로 설정하면 문제가 생깁니다. 최저 임금을 최저 임금으로 대체하는 임금 (0보다 큰 모든 임금)을 비교하는 것은 임금이 모두 0 이하이기 때문에 불가능합니다. 그래서 대신 Int32.MaxValue를 사용했습니다. 왜냐하면 모든 임금이이 값보다 낮을 것이라고 보장하기 때문입니다.

이것은 하나의 예일 뿐이지 만 재설정하고 초기화 된 내용으로 다시 배열하는 것이 편리한 다른 곳이 있습니다. 이 구문이 C#에서 있습니까?

편집이 : @Shannon Holsinger과 함께 답을 발견 wages = new int[] {0, 0, Int32.MaxValue};

+0

내가 생각 임금 = {0, 0, Int32.MaxValue }; 그렇게하는 가장 쉬운 방법입니다. 임금에 클래스 범위가 있다면, 당신은 resetWages() 또는 뭔가라는 메서드에 넣을 수 있습니다. –

+0

@ShannonHolsinger 내가 할 때, 그것은 나의 포맷에 대해 논한다. 그것은 중괄호 나 쉼표를 좋아하지 않습니다. 방금 wages.Initialize()라는 함수를 찾았습니다. 이것이 내가 찾고있는 것이면 궁금합니다 –

+0

아니요, 배열은 "초기화 된 상태"와 "현재 상태"를 유지하지 않습니다. "현재 상태"가 있습니다. – itsme86

답변

0

짧은 대답은이 일을 내장 방법이 아니다는 것이다. 프레임 워크는 배열의 초기 상태 (현재 상태)를 자동으로 추적하지 않으므로 원래 상태로 다시 초기화하는 방법을 알 수 없습니다. 수동으로 할 수도 있습니다. ResetArray 확장 방법은 다음과 같습니다

 // 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]; 

: 이것에 대한 정확한 접근 방법은 배열이 처음에 초기화 있었는지에 따라 달라집니다

// 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 은이를 일반화하는 것입니다. default (T)는 T 유형에 상관없이 기본값을 반환합니다. 예를 들어, T가 int이면 기본값 (T)은 0을 반환합니다. – EJoshuaS

+0

오 멋진 감사합니다! –

관련 문제