13 메서드 파라미터

vencott·2021년 6월 2일
0

C#

목록 보기
13/32

메서드

클래스 내에서 일련의 코드 블록을 실행하는 함수

N개의 파라미터와 1개의 리턴값을 가진다

public, private와 같은 접근 제한자를 리턴 타입 앞에 명시할 수 있다

Pass by Value

C#에서 기본 인자 전달 방식은 값을 복사해서 전달하는 Pass by Value 방식이다

전달된 인자를 메서드 내에서 변경해도 메서드가 종료되면 전달되었던 인자값은 호출자에서 원래 값 그대로 유지된다

class Program
{
    private void Calculate(int a)
    {
        a *= 2;
    }

    static void Main(string[] args)
    {
        Program p = new Program();

        int val = 100;
        p.Calculate(val);  // 그대로 100        
    }
}

Pass by Reference

C#에서 레퍼런스로 인자를 전달하고자 한다면 ref 키워드를 사용한다

ref로 전달되는 변수는 사전에 초기화된 상태여야한다

ref와 비슷한 기능을 하는 키워드로 out이 있다

out을 사용하는 파라미터는 메서드 내에서 값을 반드시 지정해 전달하게 되어 있다

// ref
static double GetData(ref int a, ref double b)
{ return ++a * ++b; }

// out
static bool GetData(int a, int b, out int c, out int d)
{
    c = a + b; // out은 값을 반드시 지정
    d = a - b;
    return true;
}

static void Main(string[] args)
{
    // ref - 초기화 필요
    int x = 1;
    double y = 1.0;
    double ret = GetData(ref x, ref y);

    // out - 초기화 불필요
    int c, d;
    bool bret = GetData(10, 20, out c, out d);
}

Named 파라미터

C# 4.0 이후부터 파라미터의 순서에 상관없이 파라미터명을 지정하여 전달할 수 있다

void Method1(int score, int age, string name)
{

}

Method1(name: "John", age: 10, score: 90);

Optional 파라미터

C# 4.0 이후부터 디폴트 값을 갖고 있는 파라미터는 호출 시 생략할 수 있다

Optional 파라미터는 반드시 파라미터 중 맨 마지막에 위치해야한다

class Program
{
    // Optional 파라미터 calcType
    int Calc(int a, int b, string calcType = "+")
    {
        switch (calcType)
        {
            case "+":
                return a + b;
            case "-":
                return a - b;
            case "*":
                return a * b;
            case "/":
                return a / b;
            default:
                throw new ArithmeticException();
        }
    }

    static void Main(string[] args)
    {
        Program p = new Program();
        int ret = p.Calc(1, 2); // calcType 생략(디폴트 값 사용)
        ret = p.Calc(1, 2, "*");  // calcType 명시
    }
}

params

일반적으로 메서드 파라미터의 개수는 고정이다

만약 파라미터 개수를 미리 알 수 없는 경우 params 키워드를 사용한다

params 키워드는 가변적인 배열을 인자로 갖게 해준다

파라미터들 중 반드시 하나만 존재해야 하며, 맨 마지막에 위치해야한다

// params
 int Calc(params int[] values)

// call
int s = Calc(1,2,3,4);
s = Calc(6,7,8,9,10,11);

출처: http://www.csharpstudy.com/

profile
Backend Developer

0개의 댓글