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 |
Tags
- 프래그멘테이션
- 해쉬맵
- vector
- 차이점
- 인프런
- 알고리즘
- 공부
- rookiss
- 스택영역
- Queue
- 멀티쓰레드
- MonoBehaviour
- 트리
- 벡터
- 객체지향
- static_cast
- 리스트
- list
- 스택
- 큐
- thread
- 배열
- map
- std::map
- 자료구조
- std::unordered_map
- 반복문
- c#
- 기술면접
- 힙영역
Archives
- Today
- Total
호빵의 IT 개발소
[C/C #] ref, out 키워드 본문
ref, out
- ref와 out 키워드는 메서드 or 함수 내에서 인수를 전달하는데 사용
- ref와 out 키워드는 인수/매개 변수가 참조로 전달되어 나타냄
ref, out의 공통점
- ref와 out 키워드는 런타임에 다르게 처리되며 컴파일 시간에 동일하게 처리
- 속성은 변수가 아니므로 ref 또는 out 매개변수로 전달할 수 없음
ref 키워드
- 인수를 참조로 전달하는데 사용 - 매개 변수의 값이 메서드에서 변경되면 호출하는 메서드에 반영
- 전달된 인수는 호출된 메서드에 전달되기 전에 호출 메서드에서 초기화 되어야 함(중요)
ref 특징
- 매개 변수가 ref로 전달되기 전에 초기화
- 호출 메서드로 돌아가기 전에 매개 변수 값을 초기화할 필요는 없음
- ref 매개변수를 통한 값 전달은 호출된 메서드가 전달된 매개 변수의 값을 변경해야 할 때 유용
- ref를 사용하면 데이터를 양방향으로 전달할 수 있음
class Test
{
static void TestRef(ref int number)
{
number = 10;
Console.WriteLine("TestRef에서 값 변경: {0}", number);
}
static void Main(string[] args)
{
int number1 = 0;
Console.WriteLine("TestRef 호출 전: {0}", number1);
TestRef(ref number1);
Console.WriteLine("TestRef 호출 후: {0}\n", number1);
}
}

out 키워드
- ref 키워드와 같은 인수를 전달하는데 사용되지만 값을 할당하지 않고 인수를 전달할 수 있음
- 전달된 인수는 호출 메서드로 돌아가기 전에 호출된 메서드에서 초기화 되어야 함
out 특징
- 매개 변수가 전달되기 전에 초기화할 필요가 없음
- 호출 메서드로 돌아가기 전에 매개 변수 값을 초기화해야 함
- 매개 변수 선언은 메서드가 여러 값을 리턴할 때 유용
- 데이터는 단방향 방식으로만 전달됨(호출된 메서드 -> 호출자 메서드)
class Test
{
static void TestOut(out int number)
{
number = 10;
Console.WriteLine("TestOut에서 값 변경: {0}", number);
}
static void Main(string[] args)
{
int number1;
TestOut(out number1);
Console.WriteLine("TestOut 호출 후: {0}\n", number1);
}
}

출처 및 참조 : https://developer-talk.tistory.com/53
'CS(전공지식) > 프로그래밍언어' 카테고리의 다른 글
| 재귀 호출의 장단점 (0) | 2022.07.18 |
|---|---|
| 오버로딩, 오버라이딩 (0) | 2022.06.29 |
| [C] C프로그램(소스 파일, 목적 파일, 실행 파일) (0) | 2022.06.26 |
| [C] 포인터 (0) | 2022.06.24 |
| [C/C#] 업캐스팅, 다운캐스팅 (0) | 2022.06.23 |
Comments