7
C#의 **이름 지정 인수(named arguments)**는 메서드나 생성자에 인수를 전달할 때, 인수의 이름을 명시적으로 지정하여 전달하는 방식입니다. 이는 특히 인수가 많거나, 기본값이 있는 인수를 사용하는 메서드 호출 시 가독성과 명확성을 높여줍니다.
📌 기본 문법
void PrintPerson(string name, int age, string city)
{
Console.WriteLine($"{name}, {age}세, {city}");
}
// 일반적인 방식
PrintPerson("홍길동", 30, "서울");
// 이름 지정 인수 사용
PrintPerson(name: "홍길동", age: 30, city: "서울");
// 순서 변경 가능
PrintPerson(city: "부산", name: "김철수", age: 25);
✅ 장점
- 순서를 기억할 필요 없음
→ 인수 이름으로 직접 지정하므로 순서를 바꿔도 OK. - 기본값 인수와 함께 사용하면 가독성 향상
→ 불필요한 인수를 생략하고 필요한 것만 지정할 수 있음.
void CreateUser(string username, string role = "User", bool active = true)
{
Console.WriteLine($"{username}, Role: {role}, Active: {active}");
}
// 일부만 지정
CreateUser("admin", active: false); // role은 기본값 "User"
⚠️ 주의사항
- 위치 기반 인수와 섞어 쓸 경우, 위치 인수는 앞에 와야 함
// 올바른 예
PrintPerson("홍길동", age: 30, city: "서울");
// 잘못된 예 (컴파일 오류)
PrintPerson(name: "홍길동", 30, "서울"); // 위치 인수가 이름 지정 인수 뒤에 옴
- 중복 지정 금지
PrintPerson("홍길동", age: 30, age: 25); // 오류: age가 두 번 지정됨
🧠 요약
기능 | 설명 |
---|---|
인수 명시 가능 | 메서드명(매개변수이름: 값) 형식으로 사용 |
순서 무관 | 이름을 지정하므로 인수 순서를 바꿔도 문제 없음 |
기본값 인수와 유용 | 일부 인수만 선택적으로 지정 가능 |
가독성 향상 | 어떤 인수에 어떤 값을 넣는지 코드상에서 쉽게 알 수 있음 |