c# 배열 변경도중 문제가 발생하였습니다
조회수 948회
int[] Heap = new int[4];
for(int i=0;i<32;i++)
{
if(usedsize == Heap.Length) //
{
Array.Resize(ref Heap, Heap.Length *2);
Console.WriteLine("Heap["+(Heap.Length-1)+"] ="+Heap[Heap.Length-1]);
}
++usedsize;
} //출력 : Heap[7] =0
위 코드 이며, 배열이 꽉 찼을경우 Array.Resize로 배열 의 최대용량을 2배로 늘리는것인데 처음 한번말고 Heap.Length가 처음 한번에만 4에서 8로 변경되고. 그 이후 8에서는 if문이 참이 되지를 않네요 구현은 Heap.Length 쓰지말고 마지막값을 가리키는 변수를 가리키면 되겠지만 어째서 이렇게 Heap.Length의 값이 변경되지않는지 궁금합니다.
1 답변
-
using System; public class Hello1 { public static void Main() { int[] Heap = new int[4]; int usedsize = 0; for(int i=0;i<32;i++) { if(usedsize == Heap.Length) // { Array.Resize(ref Heap, Heap.Length *2); Console.WriteLine("Heap["+(Heap.Length-1)+"] ="+Heap[Heap.Length-1]); } ++usedsize; } } }
Heap[7] =0 Heap[15] =0 Heap[31] =0
올려주신 코드가 로직이 단순하고 잘 동작하고 있어서 딱히 문제를 찾기 힘드네요.
디버깅 모드로 step 별 tracking 해보시기 바랍니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력