Ich habe die C++-Version dieser Frage aber ich habe es nicht wirklich verstanden.
Kann jemand bitte klar erklären, wenn es in C# getan werden kann, und wie?
Ich habe die C++-Version dieser Frage aber ich habe es nicht wirklich verstanden.
Kann jemand bitte klar erklären, wenn es in C# getan werden kann, und wie?
Nein, Sie können nicht mehrere Werte aus einer Funktion in C# zurückgeben (für Versionen niedriger als C# 7), zumindest nicht in der Art und Weise, wie Sie es in Python tun können.
Es gibt jedoch eine Reihe von Alternativen:
Sie können ein Array vom Typ Objekt mit den gewünschten Mehrfachwerten zurückgeben.
private object[] DoSomething()
{
return new [] { 'value1', 'value2', 3 };
}
Sie können verwenden out
Parameter.
private string DoSomething(out string outparam1, out int outparam2)
{
outparam1 = 'value2';
outparam2 = 3;
return 'value1';
}
Es gibt mehrere Möglichkeiten, dies zu tun. Sie können verwenden ref
Parameter:
int Foo(ref Bar bar) { }
Damit wird ein Verweis an die Funktion übergeben, so dass die Funktion das Objekt im Stapel des aufrufenden Codes ändern kann. Obwohl dies technisch gesehen kein "zurückgegebener" Wert ist, ist es eine Möglichkeit, eine Funktion etwas Ähnliches tun zu lassen. Im obigen Code würde die Funktion einen int
und (potenziell) ändern bar
.
Ein ähnlicher Ansatz ist die Verwendung eines out
Parameter. Eine out
Parameter ist identisch mit einem ref
Parameter mit einer zusätzlichen, vom Compiler erzwungenen Regel. Diese Regel besagt, dass wenn Sie einen out
Parameter in eine Funktion einfügt, muss diese Funktion seinen Wert vor der Rückkehr setzen. Neben dieser Regel kann eine out
Parameter funktioniert genau wie ein ref
Parameter.
Der letzte Ansatz (und in den meisten Fällen der beste) besteht darin, einen Typ zu erstellen, der beide Werte kapselt, und der Funktion zu erlauben, diesen zurückzugeben:
class FooBar
{
public int i { get; set; }
public Bar b { get; set; }
}
FooBar Foo(Bar bar) { }
Dieser letzte Ansatz ist einfacher und leichter zu lesen und zu verstehen.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
0 Stimmen
Basierend auf der Antwort auf die erwähnte Frage, in C/C++ & vor dem Variablennamen bedeutet "pass by reference", mit Referenzparametern können Sie die Variable an die Funktion übergeben und ihren Wert innerhalb der Funktion ändern, in C# können Sie es mit ref / out Parametern tun