C#/문법 및 기능

C# 메소드 오버로딩 개념잡기

Link2Me 2015. 12. 21. 07:24

C# 에서 함수(메소드)는 동일한 것을 여러개 만들 수가 있다는 걸 알게 되었다.

유투브 동영상 강좌를 보고, 구글링으로 얻은 지식 중에서 핵심내용만 적어두려고 한다.


오버로딩(OverLoading) : 한 클래스 내에서 동일한 이름의 메서드(함수)를 추가 정의



하나의 클래스에 같은 이름을 가진 메소드(함수)를 여러개 정의 할 수 있다.

메소드 이름은 동일하지만 시그너처의 갯수는 다르게 할 수 있다.

시그너처를 유일하게 하면 메서드의 이름은 얼마든지 같을 수 있다



public class MathClass
{
    public static int Max(int i, int j)
    {
        return i > j ? i : j;     //둘 중 큰수를 반환한다
    }
    public static int Max(int i, int j, int k)
    {
        return Max(Max(i, j), k); //Max(int, int) 를 호출한다
    }
    public static int Max(int i, int j, int k, int l)
    {
        return Max(Max(i, j, k), l); //Max(int, int, int) 를 호출한다
    }
    public static int Max(int[] arrays)
    {
        int maxValue = 0;
        foreach (int i in arrays)
        {
            maxValue = Max(maxValue, i); //Max(int,int) 를 호출한다
        }
        return maxValue;
    }
}




시그너처가 다르면 에러가 발생하지 않는다.


메소드 앞의 타입(string, int, double) 은 달라도 시그너처가 같으면 에러가 발생한다.




728x90