none
Array.reverse 관련 질문 RRS feed

  • 질문

  • 안녕하세요.

    제목 그대로 Array에서 reverse 메소드 관련 급질문합니다.

    다름이 아니라 int 형 배열 하나를 선언하고 그 배열의 요소들을 reverse하는 코드를 다음과 같이 작성했는데요.

     System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ConsoleApp6
    {
        class Program
        {
            static void Main(string[] args)
            {
                int[] arr = new int[] { 1, 2, 3 };
    
                foreach (var item in arr)
                {
                    Console.WriteLine($"before:{item}");
                }
    
                //Array.Reverse(arr);
                Array.Reverse(arr, 0, 2);
    
                foreach (var item in arr)
                {
                    Console.WriteLine($"after:{item}");
                }
    
                Console.Read();
            }
    
        }
    }

    위의 코드에 의하면 reverse가 이루어진 뒤의 배열은 {3,2,1}로 나와야 하는데 {2,1,3}으로 나오네요.

    누가 잘못된 점이나 왜 그런지 좀 지적 부탁드립니다.

    2019년 11월 15일 금요일 오전 3:09

답변

  • 마지막 인자가 Length의 의미입니다. 따라서 0번째 부터 2개의 요소만 reverse를 하기 때문에 그렇게 동작하는 것입니다. 의도한 데로라면 Reverse(arr, 0, 3)으로 호출해야 합니다.
    • 답변으로 표시됨 ohseihyung 2019년 11월 15일 금요일 오후 3:42
    2019년 11월 15일 금요일 오전 6:27