C#에서 innexoutofRangexception
indexoutofRangeException은 배열에 액세스하거나 컬렉션의 유효 인덱스 범위의 요소를 설정할 때 발생합니다. 이는 사용하는 인덱스가 하한의 상단 경계보다 낮거나 (또는 동일) 컬렉션보다 낮다는 것을 의미합니다.
비정상적인 발생시기
, 크기 4 : 라는 배열을 고려하십시오
액세스 인덱스 0 ~ 3은 유효하지만 에 액세스하려고하면 indexoutofRangexception 이상이 트리거됩니다.
이유와 솔루션
<.> 1. 배열의 길이
배열은 0을 기준으로하므로 첫 번째 요소의 인덱스는 0이고 마지막 요소의 인덱스는 길이 -1입니다.
와 같은 길이와 동일한 인덱스 액세스 요소를 사용하지 마십시오.
<.> 2. 상한은 내부에 포함되지 않습니다
배열 인덱스에는 상한이 포함되어 있지 않습니다.
예를 들어 (0, 0)에서 (imageSwidth -1, imageHeight -1)에서 (indageWidth -1, inmainHeight -1) 이미지를 사용해서는 안됩니다. array
<.> 3. 배열이 자동으로 자라지 않습니다.
<code class="language-csharp">byte[] array = new byte[4];</code>
배열은 빠르게 설계되었지만 크기를 조정할 수는 없습니다.
사용 array[4]
를 사용하려면 배열의 크기를 늘리려면 유효 인덱스 범위가 0에서 길이 -1이라는 점을 기억하십시오.
<.> 4. 맞춤형 배열 경계
어레이는 맞춤형 하한 경계를 가질 수 있습니다.
인터뷰 외부의 지수가 이상을 유발할 수 있으므로 계산과 경계가 올바른지 확인하십시오.
<.> 5. 잘못된 매개 변수
범위를 넘어 인덱스에 대한 액세스를 방지하기 위해 함수에 입력하거나 전달 된 매개 변수를 확인합니다. -
<.> 6. 사고 결과 -
array[array.Length] = 0;
검색 함수는 -1을 비정상적인 항목으로 반환 할 수 있습니다.
후속 어레이 액세스에서 이상을 피하기 위해 이러한 상황을 처리합니다.
<.> 7. Idatareader와 열
idaReader와 함께 데이터베이스의 데이터에 액세스 할 때는 효과적인 열 인덱스를 제공하십시오.
<.> 8. DataviewSort
-
열 이름이 DataViewSort에 대해 지정되는지 확인하십시오.
-
피하는 방법
pixels[imageWidth, imageHeight]
요소에 액세스하기 전에 매개 변수 및 배열 경계를 확인하십시오.
검색 함수의 잠재적 문제에 대한 처리 -1.
올바른 전제 조건을 보장하기 위해 또는 객체 상태 검증을 사용하십시오.
디버그하는 방법 -
스택 추적을 점검하여 이상의 라인을 결정하십시오. -
관련 배열 및 인덱스를 확인하여 유효 범위 내에 있는지 확인하십시오.
Array.Resize<T>()
디버거를 사용하여 코드를 점차적으로 실행하고 변수의 값을 모니터링하십시오.
위 내용은 C#에서 인덱스 아웃 트랜지 렉스 션이 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!