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?
Zukünftige Versionen von C# werden benannte Tupel enthalten. Schauen Sie sich diese channel9-Sitzung für die Demo an https://channel9.msdn.com/Events/Build/2016/B889
Springen Sie zu 13:00 für das Tupel-Zeug. Dies ermöglicht Dinge wie:
(int sum, int count) Tally(IEnumerable<int> list)
{
// calculate stuff here
return (0,0)
}
int resultsum = Tally(numbers).sum
(unvollständiges Beispiel aus dem Video)
Sie könnten ein dynamisches Objekt verwenden. Ich denke, es ist besser lesbar als Tuple.
static void Main(string[] args){
var obj = GetMultipleValues();
Console.WriteLine(obj.Id);
Console.WriteLine(obj.Name);
}
private static dynamic GetMultipleValues() {
dynamic temp = new System.Dynamic.ExpandoObject();
temp.Id = 123;
temp.Name = "Lorem Ipsum";
return temp;
}
Verwenden Sie einfach in OOP-Manier eine Klasse wie diese:
class div
{
public int remainder;
public int quotient(int dividend, int divisor)
{
remainder = ...;
return ...;
}
}
Das Funktionsmitglied gibt den Quotienten zurück, an dem die meisten Aufrufer in erster Linie interessiert sind. Zusätzlich speichert es den Rest als Datenelement, auf das der Aufrufer anschließend leicht zugreifen kann.
Auf diese Weise können Sie viele zusätzliche "Rückgabewerte" haben, was sehr nützlich ist, wenn Sie Datenbank- oder Netzwerkaufrufe implementieren, bei denen viele Fehlermeldungen benötigt werden, aber nur, wenn ein Fehler auftritt.
Ich habe diese Lösung auch in die C++-Frage eingegeben, auf die sich OP bezieht.
Wie man das macht:
1) KeyValuePair (beste Leistung - 0,32 ns):
KeyValuePair<int, int> Location(int p_1, int p_2, int p_3, int p_4)
{
return new KeyValuePair<int,int>(p_2 - p_1, p_4-p_3);
}
2) Tupel - 5,40 ns:
Tuple<int, int> Location(int p_1, int p_2, int p_3, int p_4)
{
return new Tuple<int, int>(p_2 - p_1, p_4-p_3);
}
3) out (1,64 ns) oder ref 4) Erstellen Sie Ihre eigene benutzerdefinierte Klasse/Konstruktion
ns -> Nanosekunden
Referenz: Mehrfach-Rückgabewerte .
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