programing

배열의 인덱스가 존재합니까

nasanasas 2020. 10. 20. 07:41
반응형

배열의 인덱스가 존재합니까


나는 직장에서 정말 나쁜 냄새가 나는 코드를 물려 받았습니다. 나는 가능한 가장 고통스럽지 않은 해결책을 찾고 싶습니다.

임의의 숫자가 배열에서 유효한 요소인지 확인하는 방법이 있습니까?

예-array [25]가 있는지 확인해야합니다.

바람직하게는 행을 찾기 위해 배열을 통해 foreach ()를 수행하지 않고 이것을 수행하는 것을 선호합니다.

이 작업을 수행하는 방법이 있습니까, 아니면 foreach 루프가 붙어 있습니까?


길이 테스트

int index = 25;
if(index < array.Length)
{
    //it exists
}

LINQ를 사용하여이를 달성 할 수도 있습니다.

var exists = array.ElementAtOrDefault(index) != null;

"유효한 요소"란 정확히 무엇을 의미합니까? 다음과 같이 할 수 있습니다.

if (array.Length >= 26)

이는 25가 배열에 대한 유효한 인덱스인지 여부를 알려줍니다 (하한이 0이라고 가정).

null이 아닌지 여부를 알아야하는 경우 다음을 사용하십시오.

if (array[25] != null)

(또는 둘의 조합).

이것이 도움이되지 않는다면 문제에 대해 "유효"라는 더 정확한 의미를 제공하십시오.


항목이 null이 아닌지 확인하고 싶다고 가정합니다.

if (array.Length > 25 && array[25] != null)
{
    //it exists
}

// I'd modify this slightly to be more resilient to a bad parameter
// it will handle your case and better handle other cases given to it:

int index = 25;

if (index >= 0 && index < array.Length)
{
    // Array element found
}

배열의 길이를 사용하고 임의의 숫자가 해당 범위에 맞는지 확인할 수 있습니다. 예를 들어, 크기가 10 인 배열이있는 경우 25가 10보다 작지 않기 때문에 array [25]는 유효하지 않습니다.


오히려 List를 사용하여 존재 여부를 확인할 수 있습니다.

List<int> l = new List<int>();
l.Add(45);
...
...

if (l.Count == 25) {
  doStuff();
}
int num = 45;
if (l.Contains(num)) {
  doMoreStuff();
}

array.length 배열에 몇 개의 요소가 있는지 알려줍니다.


인덱스가 배열의 길이보다 작은 지 확인할 수 있습니다. 이것은 인덱스에 값을 할당 할 수 있지만 명시 적으로 부여하지 않은 널 또는 기타 이상한 경우를 확인하지 않습니다.


배열의 길이를 확인하여 항목 25가 배열에 있다는 의미에서 유효한지 확인할 수 있습니다.

if (array.Length > 25)
{ 
   if (array[25] != null)
   {
       //good
   }
}

배열 항목 자체가 설정되었는지 확인합니다.


It sounds very much like you're using an array to store different fields. This is definitely a code smell. I'd avoid using arrays as much as possible as they're generally not suitable (or needed) in high-level code.

Switching to a simple Dictionary may be a workable option in the short term. As would using a big property bag class. There are lots of options. The problem you have now is just a symptom of bad design, you should look at fixing the underlying problem rather than just patching the bad design so it kinda, sorta mostly works, for now.

참고URL : https://stackoverflow.com/questions/794760/does-index-of-array-exist

반응형