[C# 5.0] 매개변수
1] Call By Reference
: C에서는 Call By Reference를 구현하기 위해서는 변수의 주소값을 참조하기 위해 "&"를 사용했지만, C# 에서는 "ref" 라는 키워드를 사용한다.
static void Swap (ref int a, ref int b)
{
int temp = b;
b = a;
a = temp;
}
int a = 3;
int b = 4;
Swap( ref a, ref b)
2] 출력 전용 매개 변수
: 하나의 메서드 호출로 여러개의 결과값을 받고 싶을때 "out" 키워드를 사용한다.
void Divide( int a, int b, out int quotient, out int remainder )
{
quotient = a / b;
remainder = a % b;
}
out이 ref와 다른점은 메서드 안에서 out 매개변수에 값을 할당하지 않은 경우 컴파일 에러가 발생한다. 그리고 메소드를 호출하는 쪽에서는 초기화 하지 않은 지역변수를 out 매개변수로 넘기는것이 가능하다.
3] 가변길이 매개 변수
: 매개변수의 갯수를 가변적으로 설정하고 싶다면 params 키워드를 사용한다.
int Sum ( params int[] args )
{
int sum = 0;
for (int i = 0; i < args.Length; i ++)
{
sum += args[i];
}
return sum;
}
4] 명명된 매개 변수
: 메소드를 호출할 때 매개변수의 이름을 지정해서 호출할 수 있다. 메서드의 정의가 달라지는게 아니라 호출할 때 매개변수의 이름을 명시해서 호출하느냐 아니냐의 차이다.
static void PrintProfile(string name, string phone)
{
Console.WriteLine("Name: {0}, Phone: {1}", name, phone");
}
static void Main(string[] args)
{
PrintProfile(name: "박찬호", phone : "010-123-1234");
}
5] 선택적 매개 변수
: 매개변수의 기본값을 할당하여, 함수 호출시에 해당 매개변수를 생략할 수 있다.
선택적 매개 변수는 항상 필수 매개 변수 뒤에 와야 한다. 필수 매개 변수가 없는 경우에는 상관없다.
void MyMethod( int a, int b = 0)
{
Console.WriteLine(" {0}, {1} ", a, b);
}
MyMethod(3);
MyMethod(3, 4);