선택적 매개변수 ( Optional Parameter )
C# 에서는 메서드를 호출할 때 , 일부 매개변수를 생략할 수 있는 기능을 제공한다.
이 기능을 선택적 매개변수 ( Optional Parameter ) 라고 한다.
선택적 매개변수는 메서드를 호출할 때 지정하지 않으면 기본값이 자동으로 들어가는 매개변수이다.
void Print(string message, int count = 1)
count 는 값을 안 주면 자동으로 1 을 사용한다.
사용 방법
▼기본 문법
반환형 메서드이름(타입 매개변수 = 기본값)
void Print(string text, int count = 1)
{
for (int i = 0; i < count; i++)
Console.WriteLine(text);
}
Print("Hello"); // 한 번 출력
Print("Hello", 3); // 세 번 출력
선택적 매개변수의 규칙
▼ 선택적 매개변수는 항상 마지막에 위치
void Func(int a, int b = 0) { } // 가능
void Func(int a = 0, int b) { } // 오류
▼ 기본 값은 상수, 리터널 또는 컴파일 타임에 계산 가능한 값만 가능
void calc(int x = 10) { } // 가능
void calc(DateTime d = DateTime.Now); // 오류 (런타임 값)
▼ 인터페이스 / 상속에서 주의
interface ITest
{
void Run(int value = 1);
}
- 호출 기준은 컴파일 시점
- 구현 클래스에서 기본 값을 바꿔도 의미 없다
함수 호술 시 선택적 매개변수를 생략하면 자동으로 기본 값이 들어간다
예시 코드
void SpawnEnemy(string type, int hp = 100, bool isBoss = false)
{
Debug.Log($"{type} / HP:{hp} / Boss:{isBoss}");
}
// 호출
SpawnEnemy("Goblin");
SpawnEnemy("Dragon", 300, true);
void Move(Vector2 dir, float speed = 5f, bool smooth = true) { }
// 일부만 지정
Move(Vector2.right, smooth: false);
void Damage(int value, bool critical = false) { }
주의할 점
선택적 매개변수를 사용하는 메서드는 버전 변경 시 주의
이미 컴파일된 코드에서는 기본 값이 고정된 값으로 컴파일된다.
void Say(string msg = "Hi") { }
// 기본값을 나중에 "Hello"로 바꿔도, 기존 바이너리는 "Hi"를 계속 사용
많은 선택적 매개변수를 사용하는 함수는 피하는 것이 좋다
호출하는 사람이 매개변수 의미를 헷갈릴 수 있기 때문이다.
사용하면 좋을 상황
- 옵션성 값 ( 속도 , 대미지 , 플래그 )
- 함수 오버로딩 줄이고 싶을 때
- 기본 행동 + 추가 옵션 구조
정리
선택적 매개변수는 "기본 값이 있는 매개변수" 로 호출을 단순화하고 오버로딩을 줄여주는 문법이다.
'⭐C Sharp > 00. 문법' 카테고리의 다른 글
| 정규표현식 ( Regex ) (0) | 2026.02.17 |
|---|---|
| Contains (0) | 2025.12.29 |
| 얕은 복사 vs 깊은 복사 (0) | 2025.10.19 |
| 애트리뷰트 ( C# Attribute ) (0) | 2025.10.14 |
| IsNumeric (0) | 2025.10.08 |