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 해보시기 바랍니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)