ref:
1. 구조체를 대상으로 사용하면 클래스처럼 call by reference, 참조 형식이 됨
2. 클래스같은 참조 형식에 사용하면 값이 아닌 주소를 복사해감
ex)
struct A {
public int a, b;
public A(int a, int b) {
this.a = a;
this.b = b;
}
}
class Program {
public static void Method(ref A a) { a.a += 1; }
static void Main(string[] args) {
A a = new A(0, 0);
Method(ref a);
Console.WriteLine(a.a);
}
}
출력 결과: 1
//
out:
1. 참조 형식. 밖에서 초기화하든 하지 않든 메서드 안에서 out 매개변수에 값을 할당해야함
ex)
public static void Method2(out int a) { a = 1; }
static void Main(string[] args) {
int a;
Method2(out a);
Console.WriteLine(a);
}
출력 결과: 1