ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 가변 인수가 있는 메서드 (Method with variable arguments)
    유니티 개발/C# 2021. 10. 4. 18:07

    *본 게시글은 독자에게 설명하는 글이 아닌 개인 학습내용을 정리한 글입니다. 참고 부탁드립니다.

     

    C#을 다루다 보면, 메서드에서 받아오는 인수의 갯수나 형태가 다양하게 들어가야하는 경우가 있습니다.

    이러한 경우에 똑같은 기능을 하는 다른 메서드를 생성하기보다 가변적 인수를 오버로딩이나 배열단위로 받아오는 법을 알아보도록 하겠습니다.

     

    예제는 유니티를 사용해서 제작했습니다.

     

     

    1. 메소드 오버로딩

     

     

    메소드 오버로딩은 다양한 형식의 인수를 같은 메서드로 받아오는 것을 뜻합니다.

    예를들어 계산기를 구현한다고 했을때, 소수점을 받아야 할수도 있고 정수를 받아야 할수도 있습니다.

    이를 소수점을 받는 메서드, 정수를 받는 메서드로 따로 제작하기보다 오버로딩이라는 기능을 사용하면 코드를 간결하게 짤수있습니다.

     

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    private void Start()
        {
            print(Sum(0.1f, 0.6f));
        }
     
        int Sum(int a, int b)
        {
            return a + b;
        }
     
        float Sum(float a, float b)
        {
            return a + b;
        }
    cs

    Sum 메서드의 오버로딩을 구현한 코드

    위에 코드에서 int와 float 형태의 Sum 메서드를 만들었는데, 컴파일 과정에서 인수를 확인하여 해당 형식에 맞는 메서드를 자동으로 찾아서 실행합니다. 즉 똑같은 기능을 하는 다양한 메서드는 같은 이름으로 정해서 편하게 제작할수 있는것이죠.

     

     

    2. 가변 인수 오버로딩

     

     

    메서드로 넘겨주는 인수의 갯수가 고정이 아니라 다양할 경우 사용하는 오버로딩 방식입니다.

    이번엔 위에서 만든 계산기에서 여러가지수를 입력받았을때 다 더해주는 메서드를 만든다고 했을때, 그 숫자가 2개 일수도 있고 10개 일수도 있습니다. 이럴때 사용하는 오버로딩을 가변 인수 오버로딩이라고 합니다.

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
        private void Start()
        {
            print(Sum(1,2,3,4,5,6,7,8,9,10));
        }
     
        int Sum(params int[] args)
        {
            int sum = 0;
     
            for (int i = 0; i < args.Length; i++)
            {
                sum += args[i];
            }
     
            return sum;
        }
    cs

    Sum의 가변인수 메서드 코드

     

    params 라는 키워드와 배열을 이용하면 가변 배열을 자동으로 할당하여 다양한 인수 갯수에 유동적으로 대응 할 수 있습니다.

    '유니티 개발 > C#' 카테고리의 다른 글

    얕은 복사와 깊은 복사 (Shallow copy and deep copy)  (0) 2021.10.11

    댓글

Designed by Tistory.