나는 직장에서 정말 나쁜 냄새가 나는 코드를 물려 받았습니다. 가능한 가장 고통스럽지 않은 해결책을 찾고 싶습니다.
임의의 숫자가 배열에서 유효한 요소인지 확인하는 방법이 있습니까?
예-array [25]가 있는지 확인해야합니다.
바람직하게는 행을 찾기 위해 배열을 통해 foreach ()를 수행하지 않고이 작업을 수행하는 것이 좋습니다.
이 작업을 수행하는 방법이 있습니까, 아니면 foreach 루프가 붙어 있습니까?
나는 직장에서 정말 나쁜 냄새가 나는 코드를 물려 받았습니다. 가능한 가장 고통스럽지 않은 해결책을 찾고 싶습니다.
임의의 숫자가 배열에서 유효한 요소인지 확인하는 방법이 있습니까?
예-array [25]가 있는지 확인해야합니다.
바람직하게는 행을 찾기 위해 배열을 통해 foreach ()를 수행하지 않고이 작업을 수행하는 것이 좋습니다.
이 작업을 수행하는 방법이 있습니까, 아니면 foreach 루프가 붙어 있습니까?
답변:
길이 테스트
int index = 25;
if(index < array.Length)
{
//it exists
}
LINQ를 사용하여이를 달성 할 수도 있습니다.
var exists = array.ElementAtOrDefault(index) != null;
new object[]{ null }.ElementAtOrDefault(index)반환 null0에있는 요소부터 입니다 null . 을 사용하는 ElementAtOrDefault것은 배열 인덱스 가 존재 하는지 확인하는 데 좋은 솔루션이 아닙니다. 끝에 동등성 검사가 추가되어 결과를 확인할 수 없습니다.
array.Length > index.
"유효한 요소"란 정확히 무엇을 의미합니까? 다음과 같이 할 수 있습니다.
if (array.Length >= 26)
이는 25가 배열에 대한 유효한 인덱스인지 여부를 알려줍니다 (하한이 0이라고 가정).
null이 아닌지 여부를 알아야하는 경우 다음을 사용하십시오.
if (array[25] != null)
(또는 둘의 조합).
이것이 도움이되지 않는다면 문제에 대해 "유효"라는 더 정확한 의미를 제공하십시오.
Index was outside the bounds of the array
오히려 List를 사용하여 존재 여부를 확인할 수 있습니다.
List<int> l = new List<int>();
l.Add(45);
...
...
if (l.Count == 25) {
doStuff();
}
int num = 45;
if (l.Contains(num)) {
doMoreStuff();
}