C# Ref 와 Out 키워드
2024. 4. 23. 20:22ㆍC#/C# 학습정리
오늘 C#강의를 들으면서 처음 접해본 키워드였다.
간단하게 정리하자면 두 키워드 모두 데이터(변수)를 메소드에 전달하는데 사용하는 키워드인데 차이점이 존재한다.
Ref 키워드는 단방향 전달로 메소드 내에서 기존 데이터를 수정해야할때 사용한다.
Out 키워드는 양방향 전달로 메소드 내에서 전달할 변수를 초기화 할 때 주로 사용한다.
목차
- Ref 키워드란?
- Out 키워드란?
- 두 키워드의 차이점
- 마무리
Ref 키워드란?
- Ref 키워드를 반드시 매개변수에 붙혀야하고, 호출시에도 Ref키워드를 붙혀야한다.
- 참조에 의한 값 전달(call by reference)에 의해 주소가 전달되어(원본) 값을 변형하게 된다면 원본 값이 바뀌는 것이라 선언하고 호출했던 Main()메서드에서의 값도 바뀐다.
- 매개변수로 전달하기 전에 반드시 초기화하여야 한다.
static int Add(ref int a, ref int b)
{
a = 2;
b = 3;
return a + b;
}
static void Main(string[] args)
{
int a = 1; int b = 2;
Console.WriteLine(Add(ref a, ref b));
Console.WriteLine($"{a},{b}");
}
Out 키워드란?
- Ref키워드와 마찬가지로 Call by Reference로 값이 매개변수로 전달된다.
- out 키워드가 붙은 매개변수는 반드시 해당 메서드에서 값을 세팅해야한다.
- 프로그래머가 반드시 세팅해야하는 값을 구현해야할 때 사용하면 좋다.
using System.Data;
namespace test
{
internal class Program
{
static int Add(out int a, out int b)
{
a = 0;
b = 10;
return a + b;
}
static void Main(string[] args)
{
int a, b;
Console.WriteLine(Add(out a, out b));
Console.WriteLine($"{a},{b}");
}
}
}
마찬가지로 a,b모두 main메서드에서도 값이 변경되서 나온다.
Ref, Out 차이점
두 키워드다 call by reference방식으로 전달되어 원본의 값이 바뀌는 방식이다.
차이점은 간단하다.
- Ref는 전달해야하는 매개변수의 값이 바뀌어야할 때 사용하면 좋다.
- Out은 전달해야하는 매개변수의 값이 초기화가 필요할 때 사용하면 좋다.
ref는 호출하기전에 반드시 초기화 되어있어야하고,
out은 호출하기전에 값을 몰라도 관계없다.
마무리
Out,Ref키워드에 대해서 공부해보았는데, 참조에 의한 전달이라는 방식덕분에 해당 키워드들이 성능적인 측면에서는 좋은 키워드들이다.
하지만 강의에서 call by reference 방식은 개발자가 예상하지 못하게 데이터가 변경되는 경우가 발생할 수 있기 때문에 남용하는 것보단 적절하게 사용하는 것이 좋다고 하셨다.
'C# > C# 학습정리' 카테고리의 다른 글
C# - Queue (0) | 2024.05.02 |
---|---|
C# - Event (1) | 2024.04.30 |
C# - Stack (0) | 2024.04.29 |
C# StreamReader ,StreamWriter, 파일 읽기, 쓰기 (0) | 2024.04.26 |
C# 상속과 다형성 (0) | 2024.04.24 |