Kiedy wartość parametru C # 'out' lub 'ref' jest rzeczywiście zwracana do wywołującego?

Kiedy przypiszę doout lubref parametr, to wartość natychmiast przypisana do odwołania podanego przez dzwoniącego lub jestout iref wartości parametrów przypisane do referencji, gdy metoda powraca? Jeśli metoda zgłasza wyjątek, czy zwracane są wartości?

Na przykład:

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?
}

questionAnswers(2)

yourAnswerToTheQuestion