Development Tip

"var"와 "out"매개 변수의 차이점은 무엇입니까?

yourdevel 2021. 1. 8. 22:27
반응형

"var"와 "out"매개 변수의 차이점은 무엇입니까?


어떤 매개 변수의 차이점은 선언있어 var그는 선언 out? 컴파일러는 이들을 어떻게 다르게 처리합니까 (예 : 다른 코드를 생성하거나 발행하는 진단을 변경)? 아니면 다른 수정자는 프로그래머가 매개 변수의 의도 된 사용을 문서화하도록 허용합니까? 매개 변수 유형 이 문제에 어떤 영향을 미칩니 까?


var매개 변수는 참조에 의해 전달하고 그게 다에요됩니다.

out변수는 참조로 전달되지만, 입력 값이 부적합이라고 가정한다. 관리되는 유형 (문자열, 인터페이스 등)의 경우 컴파일러는 루틴이 시작되기 전에 변수를 지워서 작성하는 것과 동일하게이를 적용 param := nil합니다. 관리되지 않는 유형의 경우, 컴파일러 구현 out동일로 var.

관리되는 매개 변수의 지우기는 호출 사이트에서 수행되므로 함수에 대해 생성 된 코드는 out또는 var매개 변수에 따라 달라지지 않습니다 .


컴파일러에게는 큰 차이가 없습니다. 그것에 대한 Mason의 대답참조하십시오 .

의미 상 큰 차이가 있습니다.

  • var프로그래머에게 루틴 현재 값으로 작동 할 수 있음을 알려줍니다.
  • out프로그래머에게 루틴 현재 값을 무시 / 삭제할 것임을 알려줍니다 .

약간 늦었지만 기록을 위해 var 또는 out 이 큰 차이를 만든 경우를 발견했습니다 .

다음 메서드를 내 보낸 SOAP 웹 서비스에서 작업하고있었습니다.

function GetUser( out User :TUser ) :TResult;

C #으로 가져 오는 것과 동등하게

function GetUser( out Result :TResult) :TUser;

outvar로 변경하면 올바르게 가져 왔습니다.

Delphi SOAP 호출자가 함수 결과를 out 매개 변수 로 취급하고 두 개의 out 매개 변수 를 갖는 것이 Delphi SOAP 루틴을 혼동 한다고 생각 합니다. 당신이 사용할 수 있도록 해결 방법이 있는지 확실하지 않습니다 밖으로 매개 변수.

참조 URL : https://stackoverflow.com/questions/14507310/whats-the-difference-between-var-and-out-parameters

반응형