2009-03-28 2 views
2

확장 메서드 또는 LINQ를 사용하여 TryParse, TryRead 같은 문자를 IndexOutOfRangeException으로 던지지 않고 배열 요소에 액세스하는 안전한 방법은 무엇입니까?배열 액세스의 안전한 요소

답변

7

다음 확장 방법을 사용할 수 있습니다.

public static bool TryGetElement<T>(this T[] array, int index, out T element) { 
    if (index < array.Length) { 
    element = array[index]; 
    return true; 
    } 
    element = default(T); 
    return false; 
} 

예 :

int[] array = GetSomeArray(); 
int value; 
if (array.TryGetElement(5, out value)) { 
    ... 
} 
+0

당신은 변경해야 배열을 [ 색인]. 또한, 나는 당신의 논리가 거꾸로 생각합니다. array.Length <= index 인 경우 array [index]에 액세스하려고하면 예외가 발생합니다. –

+0

@ 짐, 내가 커피를 마시기 전에 내가 게시하기 위해 얻는 것이다. – JaredPar

+0

오타가> 0인지 확인하고 싶을 수도 있습니다. –

0

방금 ​​열거 사용, 안전하게 배열의 요소를 통해 루프를 원하는 경우 : [내가] 배열에

foreach (int item in theArray) { 
    // use the item variable to access the element 
} 
+0

아니요, 명령 줄 인수를 읽고 예외를 throw하지 않고 다음 인수의 존재를 보장해야합니다 (루프를 종료하지 않고). – abatishchev