- 메서드에 파라미터를 전달할때 사용되는 키워드로, 메서드 호출 시에 인수를 전달하는 방식을 나타낸다.
1. ref
:
- 변수를 전달하고, 해당 변수를 읽고 쓸 수 잇는 양방향 전달이 가능하다. 메서드 내에서 전달된 변수를 수정하면 호출자에게 반영된다.
- ref 가 사용되는 인수는 반드시 초기화된 변수를 전달해야 한다.
class Program
{
static void ModifyValue(ref int x)
{
x = x * 2;
}
static void Main()
{
int number = 5;
ModifyValue(ref number);
Console.WriteLine(number); // 출력: 10
}
}
2. out
:
- 메서드에서 여러 값을 반환하는 용도로 사용된다.
- out 이 사용되는 인수는 초기화 될 필요가 없이 메서드 내에서는 해당 변수를 반드시 초기화 하고 값을 할당해야 한다.
class Program
{
static void Divide(int dividend, int divisor, out int quotient, out int remainder)
{
quotient = dividend / divisor;
remainder = dividend % divisor;
}
static void Main()
{
int resultQuotient, resultRemainder;
Divide(10, 3, out resultQuotient, out resultRemainder);
Console.WriteLine($"Quotient: {resultQuotient}, Remainder: {resultRemainder}");
// 출력: Quotient: 3, Remainder: 1
}
}
namespace MethodParameter
{
internal class Program
{
// out
static void UsingOut(out int y)
{
// 반드시 초기화 후에 값을 할당해야 함
y = 42;
}
static void Main(string[] args)
{
//out
int b;
UsingOut(out b);
Console.WriteLine(b); // 42
}
}
}