본문 바로가기
Programming Language/C#

[C#] 메소드 오버로딩

by dbxxrud 2019. 5. 18.

 

오버로딩 (Overloading) - 오버 로딩이란 "과적하다"라는 뜻을 가지고 있다. 메서드 오버 로딩은 하나의 메서드 이름에 여러 개의 구현을 올리는 것을 뜻한다. 일반적으로 하나의 클래스 안에 정의된 메서드 들의 이름은 중복될 수 없다. 그러나 오버 로딩 기법을 이용하면 하나의 클래스에 같은 이름을 가진 메서드를 여러 개 정의할 수 있다.

 

 

예제

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
using System;
using static System.Console;
using System.Collections;
namespace Practice2
{
    class MainApp
    {
        // Plus 메소드를 작성합니다.
        static int Plus(int a, int b)
        {
            WriteLine("Calling int Plus(int, int)");
            return a + b;
        }
 
        // double 형식을 지원하는 버전도 추가 해야 할때 
        static double Plus(double a, double b)
        {
            WriteLine("Calling double Plus(double, double)");
            return a + b;
        }
 
        public static void Main()
        {
            WriteLine(Plus(12));
            WriteLine(Plus(1.02.4));
        }
    }
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none; color:white">cs

 

 

이렇게 오버로딩 해놓으면 컴파일러가 메소드 호출 코드에 사요외는 매개 변수의 수와 형식을 분석해서(오로지 매개변수만 분석) 어떤 버전이 호출될지를 찾아준다. 실행할 메소드의 버전을 찾는 작업이 컴파일 타임에 이루어지므로 성능의 저하는 걱정하지 않아도 된다.

 

 

 

장점

 

  • 메소드 오버로딩은 이름에 대한 고민을 줄여준다
  • 코드를 일관성 있게 유지해준다.
  • 메소드의 사용자에게도 높은 생산성을 제공한다.

 

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

[C#] 생성자와 종료자  (0) 2019.05.18
[C#] 클래스  (0) 2019.05.18
[C#] foreach문  (0) 2019.05.18
[C#] Null 병합 연산자 (Null-Coalescing Operator)  (0) 2019.04.28
[C#] 널 조건부 연산자 (Null-conditional operator)  (0) 2019.04.28