함수에 값을 대입할 때 변수 앞에 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 변수의 값이 변할 때 원래 값이 같이 바뀐다.
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
함수에서 모든 변수를 지정주지 않고 일부만 줬을때 해당 위치에 초기값이 있으면 초기값을 대입해준다. 초기값은 뒤에서부터 써야한다.
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; }