[C#/Tutorial]
C# 오버로드 함수

2020. 5. 16. 08:18


프로그래밍을 하다보면 특정 반복기능을 간단하게 제어하기 위해 함수를 생성하는데, 종종 같은 역할을 하는 함수이지만 다른 입력과 출력을 구현해야할 상황이 생기곤 한다.

이럴 때 사용할 수 있는것이 Overload function이다.

public int Sum(int a, int b)
{
	return a + b;
}

public int Sum(int a, int b, int c)
{
	return a + b + c;
}

위 코드를 살펴보면 int형의 반환값을 가진 Sum 함수이다. 기본적으로 대부분의 프로그래밍 언어에서는 문법적으로 이름이 같은 함수를 선언할 수 없지만, 예외적으로 인자로 주어지는 입력값이 다르면 선언할 수 있다.

즉 위와 같은 코드를 구성하고 Sum(1, 2)라는 코드를 실행하면 1번째 Sum함수가 실행되고, Sum(1, 2, 3)이라는 코드를 실행하면 2번째 Sum 함수가 실행된다.

방금 말했듯 인자로 주어지는 입력값이 다르면 오버로드 함수를 선언할 수 있다고 했는데, 이는 인자의 갯수에 국한된것이 아니라 인자의 타입에 따라 같은 인자의 수가 주어지더라도 선언할 수 있다.

public int Sum(int a, int b)
{
	return a + b;
}

public float Sum(float a, float b)
{
	return a + b;
}

1번째 Sum 함수는 int형을 return하며, int형 인자 두개를 입력으로 받는다.

2번째 Sum 함수는 float형을 return하며, float형 인자 두개를 입력으로 받는다.

두 함수 모두 이름이 Sum으로 같으며, 주어지는 인자의 갯수도 똑같지만 컴파일러에서 문제없이 정상적으로 처리된다.

왜냐하면 두 함수는 입력으로 받는 인자의 데이터형이 다르기때문이다.

public int Sum(int a, int b)
{
	return a + b;
}

public int Sum(int a, int b, int c)
{
	return a + b + c;
}

public float Sum(float a, float b)
{
	return a + b;
}

public float Sum(float a, float b, float c)
{
	return a + b + c;
}

결론적으로 위와같이 로직을 짜도 모든 Sum 함수는 개별적으로 동작한다.

'C# > Tutorial' 카테고리의 다른 글

C# 오버로드 함수  (2) 2020.05.16
1 2 3 4 5 6 7 8 ··· 80