C#

[C# 5.0] 매개변수

홍성곤 2017. 12. 10. 16:28

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);