"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;
out 을 var로 변경하면 올바르게 가져 왔습니다.
Delphi SOAP 호출자가 함수 결과를 out 매개 변수 로 취급하고 두 개의 out 매개 변수 를 갖는 것이 Delphi SOAP 루틴을 혼동 한다고 생각 합니다. 당신이 사용할 수 있도록 해결 방법이 있는지 확실하지 않습니다 밖으로 매개 변수.
참조 URL : https://stackoverflow.com/questions/14507310/whats-the-difference-between-var-and-out-parameters
'Development Tip' 카테고리의 다른 글
데이터베이스에 연결 한 후 역할 전환 (0) | 2021.01.08 |
---|---|
node.js 예제 (0) | 2021.01.08 |
Xcode 7-코드 커버리지 데이터 생성 실패 (0) | 2021.01.08 |
한 jupyter 노트북에서 다른 노트북으로 셀을 복사 할 수 있습니까? (0) | 2021.01.08 |
SQL Server (C # 클라이언트)에 많은 데이터를 대량 삽입하는 가장 빠른 방법은 무엇입니까? (0) | 2021.01.08 |