C#) 메서드
C#에서 메서드(Method)는 특정 작업을 수행하거나 값을 반환하는 코드 블록이다. 메서드는 C#의 객체 지향 프로그래밍에 중요한 요소이며, 클래스 또는 구조체 내에 정의된다.
메서드의 기본 구조
[접근 제한자] [반환 타입] 메서드이름(매개변수 목록)
{
// 메서드 본문
return 값; // 반환 타입이 void가 아닐 경우 필요
}
구성 요소
접근 제한자
메서드의 접근 범위를 정의.
public: 모든 코드에서 접근 가능.private: 동일 클래스 내에서만 접근 가능.protected: 동일 클래스 또는 파생 클래스에서만 접근 가능.
반환 타입
메서드가 반환하는 값의 데이터 타입을 정의.
반환 값이 없으면 void를 사용.
메서드 이름
메서드를 호출할 때 사용할 이름입니다.
매개변수 목록
메서드 호출 시 전달 받는 입력 값을 정의. 입력 값이 없을 경우 매개변수 목록을 비워둔다.
메서드 본문
메서드가 실행될 때 수행할 작업이 들어있는 코드 블록.
C# 메서드의 특징
반환값 (Return Value)
- 메서드는 작업을 수행한 결과를 반환할 수 있다.
- 반환 값이 없으면
void를 사용하며,return문은 생략 가능.
// x와 y를 곱한 결과 반환
public int Multiply(int x, int y)
{
return x * y;
}
// 반환값 없음
public void PrintMessage()
{
Console.WriteLine("This is a message.");
}
매개변수
- 메서드는 호출 시 값을 받을 수 있도록 매개변수를 정의.
- 값 전달 (value): 기본적으로 매개변수는 값으로 전달.
- 참조 전달 (reference):
ref또는out키워드를 사용하여 매개변수를 참조로 전달할 수 있다. - 매개변수 기본 값 (Default Parameters): 매개변수에 기본 값을 설정할 수 있다.
public int Add(int a, int b)
{
return a + b;
}
public double Add(double a, double b)
{
return a + b;
}
public int Add(int a, int b, int c)
{
return a + b + c;
}
메서드 오버로딩(Method Overloading)
메서드 오버로딩은 같은 이름의 메서드를 여러 가지 형태로 정의하는 것이다. C#에서는 메서드 이름은 같지만, 매개변수의 개수나 타입이 다를 경우 같은 클래스 내에서 여러 메서드를 정의할 수 있다.
이는 메서드의 다형성(Polymorphism)의 한 예이며, 하나의 메서드 이름으로 다양한 작업을 수행할 수 있도록 한다.
메서드 오버로딩의 특징
-
같은 이름의 메서드를 정의할 수 있다.
-
매개변수의 개수, 타입, 순서가 달라야 한다.
-
반환 타입(Return Type)은 오버로딩을 구분하는 기준이 되지 않는다.
-
컴파일러가 메서드 호출 시 매개변수의 시그니처(Signature)를 기준으로 어떤 메서드를 호출할지 결정한다.
using System;
class Calculator
{
// 두 개의 정수를 더하는 메서드
public int Add(int a, int b)
{
return a + b;
}
// 세 개의 정수를 더하는 메서드 (매개변수 개수 다름)
public int Add(int a, int b, int c)
{
return a + b + c;
}
// 두 개의 실수를 더하는 메서드 (매개변수 타입 다름)
public double Add(double a, double b)
{
return a + b;
}
// 정수와 실수를 더하는 메서드 (매개변수 순서 다름)
public double Add(int a, double b)
{
return a + b;
}
// 실수와 정수를 더하는 메서드 (매개변수 순서 다름)
public double Add(double a, int b)
{
return a + b;
}
}
class Program
{
static void Main()
{
Calculator calc = new Calculator();
Console.WriteLine(calc.Add(3, 5)); // 출력: 8 (int, int)
Console.WriteLine(calc.Add(3, 5, 7)); // 출력: 15 (int, int, int)
Console.WriteLine(calc.Add(3.5, 2.3)); // 출력: 5.8 (double, double)
Console.WriteLine(calc.Add(3, 2.3)); // 출력: 5.3 (int, double)
Console.WriteLine(calc.Add(3.3, 5)); // 출력: 8.3 (double, int)
}
}
오버로딩을 구분하는 기준
매개변수의 개수
public void Print() { }
public void Print(string message) { }
매개변수의 타입
public void Print(int number) { }
public void Print(double number) { }
매개변수의 순서
public void Print(int a, double b) { }
public void Print(double a, int b) { }
오버로딩에서 반환 타입의 역할
C#에서는 메서드 오버로딩을 매개변수로만 구분하며, 반환 타입은 오버로딩을 구분하는 기준이 아니다.
즉, 반환 타입만 다르고 매개변수가 동일하면 컴파일 오류가 발생한다.
// 컴파일 오류 발생: 매개변수 시그니처가 동일함
public int Add(int a, int b) { return a + b; }
public double Add(int a, int b) { return a + b; }
요약
- 메서드는 특정 작업을 수행하는 코드 블록이며, 반환값과 매개변수를 가질 수 있다.
- 메서드는 접근 제한자, 반환 타입, 매개변수를 활용하여 유연하게 정의된다.
- 메서드 오버로딩은 같은 이름의 메서드를 여러 버전으로 정의하여 다양한 매개변수를 처리할 수 있도록 한다.
- 매개변수의 개수, 타입, 순서를 기준으로 오버로딩을 구분하며, 반환 타입은 오버로딩 구분에 사용되지 않는다.
댓글남기기