비교 차트
비교의 근거 | 참조 | 아웃 |
---|---|---|
기본 | 그것은 ref 키워드로 진행된 인수 값의 변경을 허용합니다. | 이 메소드는 out 키워드가 앞에 오는 값을 반환하는 메서드를 허용합니다. |
초기화 | ref 매개 변수는 메소드 호출 전에 초기화되어야합니다. | out 매개 변수는 호출 된 메소드가 종료되기 전에 초기화되어야합니다. |
선언 | 메서드에 의해 변경 될 매개 변수는 메서드 선언 및 메서드 호출 중에 ref로 선언됩니다. | 메서드 선언 및 메서드 호출 중에 반환 할 매개 변수는 ref로 선언해야합니다. |
참조 키워드의 정의
"ref"는 call-by-reference와 함께 메소드를 호출 할 필요가있을 때 사용되는 매개 변수 수정 자입니다. 호출 된 메소드 내의 인수에 대한 변경 사항이 해당 변수의 원래 값에 반영되어야하면 ref 매개 변수 수정자가 사용됩니다. 메소드 선언 및 메소드 호출 중에 ref로 선언하려는 값 유형 앞에 "ref"키워드가옵니다. 메서드를 호출하고 선언 할 때 둘 이상의 매개 변수를 "ref"로 선언 할 수 있습니다.
시스템 사용; class DemoRef {public void Square (ref int s) {s = s * s; }} 클래스 Ref_main {static void Main () {DemoRef ob = new DemoRef (); int a = 10; Console.WriteLine ( "a 메서드 호출 전 :"+ a); ob.Square (ref a); // 사용 된 ref 키워드 Console.WriteLine ( "a after call :"+ a); }} // 메소드 호출 이전에 출력 : 10 a 메소드 호출 후 : 100
위의 코드에서 변수 'a'는 메서드 Square에 첨부 된 매개 변수 수정 자 ref와 함께 인수로 전달됩니다. 메서드 Square (ref a)가 변수 'a'에서 수행 할 변경 사항이 무엇이든 의미합니다. 'a'의 원래 값에도 반영됩니다.
매개 변수 수정 자 "ref"를 다룰 때 반드시 기억해야 할 몇 가지 중요한 사항이 있습니다.
- 참조로 메소드에 전달중인 인수는 메소드 호출 전에 초기화되어야합니다.
- 이 메서드는 ref 인수에 초기 값을 할당하지 않아야합니다.
- 참조 변수와 함께 ref도 사용할 수 있습니다.
키워드의 정의
메소드를 호출 할 때마다 단일 값만 리턴합니다. 메서드가 호출 할 때 둘 이상의 값을 반환하도록하려면 메서드가 종료 될 때 되돌릴 매개 변수와 함께 "out"키워드를 사용해야합니다. 때로는 메서드에 아무 것도 전달하지 않고 메서드가 뭔가를 반환하기를 원할 때 out 키워드를 사용하여 매개 변수를 사용하는 경우가 있습니다. 예를 들어 이해해 봅시다.
시스템 사용; class DemoOut {public int Decompose (double x, out double fraction) {int whole_num; whole_num = (int) x; fraction = x - whole_num; return whole_num; }} 클래스 Out_maint {정적 void Main () {DemoOut ob = new DemoOut (); int i; 이중 frac; i = ob.Decompose (100.125, out frac); // 키워드를 사용했습니다. Console.WriteLine ( "전체 숫자 부분은"+ i); Console.WriteLine ( "소수 부분은"+ frac); }} // 출력 정수 부분은 100입니다. 소수 부분은 0.125입니다.
위 코드에서 Decompose () 메서드에 의해 두 개의 값이 반환됩니다. 하나는 키워드 "return"ie whole_num에 의해 리턴하고, 다른 하나는 메서드 호출, 즉 "frac"을 호출하는 동안 out 키워드가 앞에 오는 매개 변수를 리턴합니다.
out 키워드에 대해 기억해야 할 중요한 사항.
- ref 키워드와 달리, out 키워드를 사용하는 매개 변수는 메소드를 호출하기 전에 초기화하지 않아야합니다.
- 호출 된 메서드는 호출 된 메서드 내에서 할당되지 않은 것으로 간주되므로 out 키워드를 사용하여 매개 변수에 값을 할당합니다. 즉, 초기 값이없는 것으로 가정합니다.
- 호출 된 메소드는 메소드가 종료되기 전에 out 매개 변수에 값을 지정해야합니다.
- out 키워드는 참조 변수에도 적용됩니다.
C #의 Ref와 Out의 주요 차이점
- ref 키워드가 앞에 오는 변수가 모든 메소드에 전달되면 메소드 내부의 변경 사항은 원래 값으로 반영됩니다. 메서드에 전달 된 변수 앞에 out 키워드가 오는 경우이 메서드는 return 키워드를 사용하지 않고이를 반환합니다.
- ref 매개 변수는 메소드에 전달되기 전에 초기화되어야합니다. 반면에 out 매개 변수는 전달 된 메서드 내에서 초기화되어야합니다.
- 메서드를 호출, 선언 또는 정의하는 동안 ref 매개 변수는 ref로 명시 적으로 선언됩니다. 한편, 메서드를 호출, 선언 또는 정의하는 동안 out 매개 변수는 명시 적으로 out으로 선언됩니다.
결론:
변수가 메소드에 대한 참조에 의해 전달 될 때마다 ref 및 out 키워드를 사용할 수 있습니다. 반면에 두 키워드를 모두 사용하는 이유는 ref 키워드를 사용하여 인수 앞에 value라는 값을 변경하고 호출 된 메소드에 전달한 후 out 키워드를 사용하여 인수의 값을 이전 값으로 되돌릴 수 있습니다. out 키워드로.