Wann wird der Wert eines C # -Out- oder -Ref-Parameters tatsächlich an den Aufrufer zurückgegeben?

Wenn ich eine Zuweisung zu einerout oderref Parameter, ist der Wert, der der vom Aufrufer angegebenen Referenz sofort zugewiesen wird, oder ist derout undref Parameterwerte, die den Referenzen zugewiesen werden, wenn die Methode zurückgibt? Wenn die Methode eine Ausnahme auslöst, werden die Werte zurückgegeben?

Zum Beispiel:

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

Antworten auf die Frage(2)

Ihre Antwort auf die Frage