Quando o valor de um parâmetro C # 'out' ou 'ref' é retornado ao chamador?
Quando faço uma tarefa para umout
ouref
parâmetro, é o valor imediatamente atribuído à referência fornecida pelo chamador, ou são osout
eref
valores de parâmetros atribuídos às referências quando o método retorna? Se o método lança uma exceção, os valores são retornados?
Por exemplo:
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?
}