공부/c#

c# ref, out

Lectinua 2019. 6. 10. 23:32

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