C#/책 정리

C# 정리 ) System.Array

denofevil 2021. 11. 29. 16:42

object가 모든 타입의 조상인 것처럼 소스코드에 정의되는 배열은 모두 Array 타입을 조상으로 둔다.

int[] intArray = new int[] { 0, 1, 2, 3, 4, 5 }

다음과 같이 배열을 정의한 경우, C# 컴파일러는 자동적으로 int[] 타입을 Array타입으로부터 상속받은 것으로 처리한다.

이로인해 배열 인스턴스(위의 코드에서는 intArray)는 Array 타입이 가진 모든 특징을 제공한다.

알아두면 유용하게 사용할 수 있는 일부 메서드를 보도록 한다.

멤버 타입 설명
Rank 인스턴스 프로퍼티 배열 인스턴스의 차원(dimension) 수를 반환한다.
Length 인스턴스 프로퍼티 배열 인스턴스의 요소(element) 수를 반환한다.
Sort 정적 메서드 배열 요소의 값을 순서대로 정렬한다.
GetValue 인스턴스 메서드 지정된 인덱스의 배열 요소 값을 반환한다.
Copy 정적 메서드 배열의 내용을 다른 배열에 복사한다.

 정적 메서드 : static으로 정의된 메서드

 

using System;

namespace Project3
{
    class Class1
    {
        private static void outPutArrayInfo(Array arr)
        {
            Console.WriteLine("배열의 차원 수 " + arr.Rank);
            Console.WriteLine("배열의 요소 수 " + arr.Length);
            Console.WriteLine();
        }
        private static void outPutArrayElements(string title, Array arr)
        {
            Console.WriteLine("[" + title + "]");
            for(int i = 0; i <arr.Length; i++)
            {
                Console.Write(arr.GetValue(i) + ", ");
            }
            Console.WriteLine();
        }
        public static void Main(String[] args)
        {
            bool[,] boolArray = new bool[,]
            {
                {true, false },
                {false, false }
            };
            outPutArrayInfo(boolArray);

            int[] intArray = new int[] { 4, 5, 3, 4, 5, 6 };
            outPutArrayElements("원본 : intArray", intArray);
            Array.Sort(intArray);
            outPutArrayElements("Arr.sort 후 intArray", intArray);

            int[] copyArray = new int[intArray.Length];
            Array.Copy(intArray, copyArray, intArray.Length);
            outPutArrayElements("intArray로부터 복사된 copyArray", copyArray);
        }
    }
}

출력 결과 :

배열의 차원 수 2                      
배열의 요소 수 4                      

[원본 : intArray]                        
4, 5, 3, 4, 5, 6,                         
[Arr.sort 후 intArray]                  
3, 4, 4, 5, 5, 6,                         
[intArray로부터 복사된 copyArray]
3, 4, 4, 5, 5, 6,                         

 

중요한 것은 배열이 System.Array로부터 상속을 받는 [참조형 타입]이라는 것이다.