추천, 2024

에디터의 선택

C에서 ref와 out의 차이점 #

"Ref"및 "Out"은 C #에서 사용되는 매개 변수 수정 자입니다. ref 및 out을 사용하면 메소드에 대한 참조를 통해 모든 값 유형을 전달할 수 있습니다. 참조로 값 유형을 전달하는 이유는 ref 및 out 키워드 사이의 주요 차이점을 나타냅니다. ref 키워드는 호출 된 메소드가 전달 된 인수의 내용을 ref 키워드로 변경하도록합니다. out 키워드는 호출 된 메소드가 단일 호출에서 둘 이상의 값을 리턴 할 수있게합니다. 비교 차트와 함께 심판과 심판의 차이를 연구합시다.

비교 차트

비교의 근거참조아웃
기본그것은 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의 주요 차이점

  1. ref 키워드가 앞에 오는 변수가 모든 메소드에 전달되면 메소드 내부의 변경 사항은 원래 값으로 반영됩니다. 메서드에 전달 된 변수 앞에 out 키워드가 오는 경우이 메서드는 return 키워드를 사용하지 않고이를 반환합니다.
  2. ref 매개 변수는 메소드에 전달되기 전에 초기화되어야합니다. 반면에 out 매개 변수는 전달 된 메서드 내에서 초기화되어야합니다.
  3. 메서드를 호출, 선언 또는 정의하는 동안 ref 매개 변수는 ref로 명시 적으로 선언됩니다. 한편, 메서드를 호출, 선언 또는 정의하는 동안 out 매개 변수는 명시 적으로 out으로 선언됩니다.

결론:

변수가 메소드에 대한 참조에 의해 전달 될 때마다 ref 및 out 키워드를 사용할 수 있습니다. 반면에 두 키워드를 모두 사용하는 이유는 ref 키워드를 사용하여 인수 앞에 value라는 값을 변경하고 호출 된 메소드에 전달한 후 out 키워드를 사용하여 인수의 값을 이전 값으로 되돌릴 수 있습니다. out 키워드로.

Top