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