out
또는 ref
매개 변수에 대한 지정을하면 호출자가 제공 한 참조에 즉시 할당되는 값입니까, 아니면 메서드가 반환 될 때 참조에 할당 된 out
및 ref
매개 변수 값입니까? 메서드가 예외를 throw하면 값이 반환됩니까? 예를 들어C# 'out'또는 'ref'매개 변수의 값이 실제로 호출자에게 반환되는 시점은 언제입니까?
: out
파라미터 방법은 발신자가 전달하는 실제 참조하여 작동하도록
int callerOutValue = 1;
int callerRefValue = 1;
MyMethod(123456, out callerOutValue, ref callerRefValue);
bool MyMethod(int inValue, out int outValue, ref int refValue)
{
outValue = 2;
refValue = 2;
throw new ArgumentException();
// Is callerOutValue 1 or 2?
// Is callerRefValue 1 or 2?
}
흠 ... 나는 그것이 내가 기대했던 것이 아니지만 시험은 그것을 확증한다! +1. –
이것은 유용한 정보입니다. : O – Sapph
'out'매개 변수를받은 메소드를 마이크로 최적화하는 것을 기억합니다. 이 메소드는 매우 빡빡한 루프에서 호출되었고 매개 변수가 변경되지 않았으므로 호출 될 때마다 필요한 초기화를 제거하기를 원했기 때문에'ref' 매개 변수를 취하게 만들었습니다. 누구든지 이에 대한 설명이 있습니까? 아니면 우연입니까? – JulianR