C# 기본 문법(out, ref, params)

로젠·2024년 4월 22일
0

게임 프로그래밍

목록 보기
11/49
post-thumbnail

out

함수에 값을 대입할 때 변수 앞에 out을 사용하면 함수가 끝난 뒤 out의 변수는 함수에서 실행된 값 그대로 유지된다.

private void Start()
{
    int a = 10;
    int b = 20;
    int c;
    Add(a, b, out c);
    print($"out : {a} + {b} = {c}");
}
private void Add(int val1,int val2,out int result)
{
    result = val1 + val2;
}

out : 10 + 20 = 30

ref

함수에 값을 대입할 때 변수 앞에 ref를 사용하면 대입한 원래 값과 대입 받는 값이 같은 주소를 사용하여 함수에서 ref 변수의 값이 변할 때 원래 값이 같이 바뀐다.

private void Start()
{
    int a = 10;
    int b = 20;
    print($"1 : {a}, 2 : {b}");
    Swap(ref a, ref b);
    print($"1 : {a}, 2 : {b}");
}
private void Swap(ref int val1, ref int val2)
{
    int temp = val1;
    val1 = val2;
    val2 = temp;
    print($"1 : {val1}, 2 : {val2}");
}

1 : 10, 2 : 20
1 : 20, 2 : 10
1 : 20, 2 : 10

Default Params

함수에서 모든 변수를 지정주지 않고 일부만 줬을때 해당 위치에 초기값이 있으면 초기값을 대입해준다. 초기값은 뒤에서부터 써야한다.

private void Start()
{
    DefaultParmas(10, 20);
    DefaultParmas(10);
}
private void DefaultParmas(int a, int b = 10)
{
    print($"a = {a}, b = {b}");
}

a = 10, b = 20
a = 10, b = 10

가변 파라미터

함수의 변수자리에 배열을 받아 가변 개수의 인수를 설정하게 하였다.

private string Combine(params string[] paths)
{
    string result = string.Empty;
    foreach(string path in paths)
    {
        result = System.IO.Path.Combine(result, path); //연결할때 역슬레쉬 추가
    }
    return result;
} 

0개의 댓글