Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
Tags
- #csharp #기본값 #definiteassignment #default키워드 #초기화규칙 #구조체초기화 #null값 #csharp세미나
- #csharp #조건연산자 #삼항연산자 #논리연산자 #단락평가 #ifelse축약 #조건문 #프로그래밍기초 #csharp세미나
- #csharp #관계연산자 #상등연산자 #equals #비교연산 #null비교 #float비교 #csharp기초 #csharp세미나 #문자열비교
- c#
- 무노동수입
- c#string
- USDT
- #csharp #연산자우선순위 #결합성 #operatorprecedence #연산자결합 #오른쪽결합 #왼쪽결합 #csharp세미나
- #csharp #수치변환 #형식변환 #자동변환 #명시변환 #convert #parse #tryparse #csharp세미나
- 자동매매
- #csharp #var키워드 #타입추론 #암묵적형식지정 #익명형식 #linq #지역변수 #csharp세미나
- #csharp #bool #boolean #논리연산자 #부울연산자 #단락평가 #조건문 #csharp기초 #삼항연산자 #csharp세미나
- #csharp #비트연산자 #bitwiseoperators #flagsenum #masking #시프트연산 #비트연산 #성능최적화 #csharp세미나 #하드웨어제어
- #csharp #널연산자 #nulloperator #널조건부연산자 #널접합연산자 #nullcheck #csharp세미나 #nullsafe #코드안정성
- c#bool
- #csharp #배열 #다차원배열 #가변배열 #배열초기화 #indexrange #span #배열비교 #csharp기초 #배열세미나
- #csharp #스택과힙 #메모리구조 #값형식 #참조형식 #박싱 #가비지컬렉션 #힙메모리 #메서드스택 #csharp세미나
- #csharp #수치형식 #numerictypes #리터럴 #형식추론 #접미사 #decimal #float #double #프로그래미링기조 #그래피포뷰
- #csharp #부동소수점 #nan #infinity #특수값 #ieee754 #수치계산 #double #float #decimal #csharp세미나
- #csharp #표현식 #배정표현식 #void표현식 #연산자 #산술연산자 #조건연산자 #표현식기초 #csharp세미나
- #csharp #double #decimal #실수형 #정밀도 #부동소수점 #고정소수점 #금융계산 #과학계산 #csharp세미나 #닷넷기초
- #csharp #부동소수점 #반올림오차 #실수계산 #float #double #decimal #mathround #정확도비교 #csharp세미나
- 빗썸api
- 빛썸
- #csharp #산술오버플로우 #checked #unchecked #overflowexception #정수연산 #오버플로우처리 #csharp세미나 #디버깅 #성능최적화
- #csharp #산술연산자 #arithmeticoperators #기초프로그래밍 #csharp기초 #연산자우선순위 #정수연산 #실수연산 #math클래스 #나눗셈예외 #csharp세미나 #닷넷개발 #프로그래밍입문
- 테더
- #csharp #매개변수 #ref #out #params #명명된인수 #선택적매개변수 #메서드전달 #csharp세미나
- #csharp #문자열 #문자 #string #char #문자열보간 #문자열연결 #문자열비교 #형식지정자 #문자변환 #csharp세미나
- 파이썬
Archives
- Today
- Total
맛있는 개발노트 (맛과 개발을 함께)
C# 세미나 자료: 매개변수 (Parameters) 본문
1. 개요
C#에서 메서드에 값을 전달할 때 사용되는 **매개변수(parameter)**는 다양한 전달 방식과 수식어를 통해 유연하고 강력한 함수 호출이 가능합니다. 값 전달, 참조 전달, 선택적 매개변수, 명명된 인수 등 다양한 패턴은 실무에서 함수 사용의 유연성과 가독성을 크게 향상시킵니다.
본 세미나에서는 C#의 주요 매개변수 전달 방식과 수식어를 초급부터 고급까지 단계적으로 설명합니다.
2. 기본 전달 방식
2.1 인수를 값으로 전달 (Call by Value)
- 기본적인 전달 방식 (값 형식, 참조 형식 모두 사용 가능)
- 값이 복사되어 전달되므로, 원본은 변경되지 않음
void Increment(int x)
{
x += 1;
}
int a = 5;
Increment(a);
Console.WriteLine(a); // 5 (변경되지 않음)
3. 참조 전달
3.1 ref 수정자
- 변수를 참조로 전달 → 메서드 내부에서 직접 수정 가능
- 호출 전 반드시 초기화되어야 함
void Increment(ref int x)
{
x += 1;
}
int a = 5;
Increment(ref a);
Console.WriteLine(a); // 6 (값이 수정됨)
3.2 out 수정자
- 메서드 내에서 값을 반드시 설정해야 함
- 호출 시 초기화되어 있지 않아도 됨
void GetValues(out int a, out int b)
{
a = 10;
b = 20;
}
int x, y;
GetValues(out x, out y);
Console.WriteLine(x); // 10
3.3 참조 전달의 영향
- 참조형을 값으로 전달하면 참조 복사 (객체 변경은 가능, 참조 자체 변경은 불가)
- ref, out을 사용하면 참조 자체도 변경 가능
void Replace(ref string s)
{
s = "새 문자열";
}
string msg = "기존 문자열";
Replace(ref msg);
Console.WriteLine(msg); // "새 문자열"
4. 매개변수 수식어
4.1 params 수정자
- 가변 인수 목록 (배열처럼 전달됨)
void PrintNumbers(params int[] nums)
{
foreach (var n in nums)
Console.WriteLine(n);
}
PrintNumbers(1, 2, 3); // 가변 길이 인수 전달
- 반드시 마지막 매개변수에만 사용 가능
5. 선택적 매개변수 (Optional Parameters)
- 기본값을 지정하여 생략 가능
void Greet(string name = "손님")
{
Console.WriteLine($"안녕하세요, {name}님");
}
Greet(); // "안녕하세요, 손님님"
Greet("철수"); // "안녕하세요, 철수님"
6. 명명된 인수 (Named Arguments)
- 매개변수 이름을 명시하여 순서를 변경하거나 가독성 향상
void Log(string message, string level = "Info")
{
Console.WriteLine($"[{level}] {message}");
}
Log(message: "프로그램 시작", level: "Debug");
Log(level: "Error", message: "예외 발생");
- 선택적 매개변수와 함께 사용 시 유용
7. 결론
- 기본 전달은 값 복사, ref/out은 참조 전달로 동작함
- params로 가변 인자 처리, default로 선택적 매개변수 제공 가능
- 명명된 인수는 코드 가독성과 유지보수에 효과적
- 메서드 설계 시 유연성과 명확성을 고려하여 매개변수 수식어를 적절히 활용해야 함
8. Q&A
Q1. ref와 out의 가장 큰 차이는 무엇인가요?
A1. ref는 호출 전 초기화가 필요하고, out은 호출된 메서드에서 반드시 값을 설정해야 합니다.
Q2. 참조형 인수를 ref 없이 전달하면 변경 가능한가요?
A2. 객체 내부 값은 변경 가능하지만 참조 자체를 바꾸려면 ref가 필요합니다.
Q3. params를 중간에 넣을 수 있나요?
A3. 아니요. params 매개변수는 반드시 메서드 매개변수 목록의 마지막에 와야 합니다.
Q4. 선택적 매개변수는 어떤 타입에만 사용할 수 있나요?
A4. 모든 타입에 사용할 수 있으며, 값 형식은 기본값을 지정해야 하고 참조 형식은 null 가능
'C# 학습 > C# 언어의 기초' 카테고리의 다른 글
C# 세미나 자료: 확정 배정 및 기본 값 (Definite Assignment & Default Values) (0) | 2025.04.08 |
---|---|
C# 세미나 자료: 스택과 힙 (Stack & Heap) (0) | 2025.04.08 |
C# 세미나 자료: 배열 (Array) (0) | 2025.04.08 |
C# 세미나 자료: 문자열과 문자 (String & Char) (0) | 2025.04.08 |
C# 세미나 자료: 조건 논리 연산자와 조건 연산자 (삼항 연산자) (0) | 2025.04.08 |