C# 프로그래밍에서 메서드의 매개변수(Parameter) 에 기본값 설정

반응형

C# 프로그래밍에서 메서드의 매개변수(Parameter) 에 기본값 설정

C#에서는 메서드를 정의할 때 매개변수에 기본값(Default Value) 을 지정할 수 있습니다. 메서드를 호출할 때 해당 인수를 생략해도 자동으로 기본값이 사용됩니다.

void SayHello(string name = "Guest")
{
    Console.WriteLine($"Hello, {name}!");
}

SayHello("Alice"); 
Hello, Alice!를 출력

SayHello(); 
Hello, Guest!를 출력

 

몇가지 사용 규칙

기본값은 뒤에서부터 지정해야 함

기본값이 있는 매개변수 뒤에는 기본값이 없는 매개변수를 둘 수 없습니다.
void PrintInfo(string name, int age = 20) { }

아래 예에서 컴파일 오류가 발생합니다(기본값이 없는 age가 뒤에 있음)
void PrintInfo(string name = "John", int age) { } 


기본값으로 사용할 수 있는 값

리터럴(literal) 값, 상수(const), default, null 등. 변수나 계산식은 사용 불가합니다(컴파일 타임에 결정되어야 함)
void Test(int x = 10, string msg = "Hi", bool flag = false, object data = null) { }

리터럴은 값 자체를 코드에 직접 적은 것을 의미. 정수형, 실수형, 문자열, 불린형등(고정된 값)
아래 예에서 number는 변수, 10은 리터럴
int number = 10; 

상수를 기본값으로 사용할수있음
const int defaultAge = 25;
void UserInfo(int age = defaultAge) { }

아래 예에서 컴파일 오류가 발생(변수는 런타임 값)
int runtimeValue = 30;
void UserInfo(int age = runtimeValue) { }

기본값을 default 키워드로 지정할 수도 있음(타입의 기본값. 참조형은 null, 숫자는 0, bool은 false)
아래 예에서 정수형 타입의 기본값인 0을 출력
void Process(int count = default, string name = default)
{
    Console.WriteLine($"{count}, {name}");
}

Process(); 

 

메서드 매개변수 기본값 예시
예시1

void Log(string message, string level = "INFO")
{
    Console.WriteLine($"[{level}] {message}");
}

Log("서버 시작됨");           // [INFO] 서버 시작됨
Log("데이터베이스 오류", "ERROR");  // [ERROR] 데이터베이스 오류

 

예시2

void Register(string name, int age = 18, string city = "Seoul") { }

Register("민수");                      // age=18, city=Seoul
Register("지영", city: "Busan");       // age=18, city=Busan (명명된 인자)
Register("현우", 25, "Jeju");          // age=25, city=Jeju



반응형

댓글

Designed by JB FACTORY