Sprache: C#
So ziemlich jeder hat schon mal eine Swap-Methode zum tauschen von Variablen-Werten geschrieben. Ab C# 7.0 geht das nun dank der Tupel noch etwas einfacher.
Dieses Snippet zeigt beide möglichen Wege.
private static void Main()
{
var a = 1;
var b = 2;
Console.WriteLine($"a={a}, b={b}");
// C# 6.0 and prior
GenericSwap(ref a, ref b);
Console.WriteLine($"a={a}, b={b}");
// C# 7.0 and later
(a, b) = (b, a);
Console.WriteLine($"a={a}, b={b}");
Console.ReadKey();
}
private static void GenericSwap<T>(ref T a, ref T b)
{
var tmp = a;
a = b;
b = tmp;
}
private static void Main()
{
var a = 1;
var b = 2;
Console.WriteLine($"a={a}, b={b}");
// C# 6.0 and prior
GenericSwap(ref a, ref b);
Console.WriteLine($"a={a}, b={b}");
// C# 7.0 and later
(a, b) = (b, a);
Console.WriteLine($"a={a}, b={b}");
Console.ReadKey();
}
private static void GenericSwap<T>(ref T a, ref T b)
{
var tmp = a;
a = b;
b = tmp;
}
Alte URL:
/snippet/variablenwerte-tauschen/15168
Gibt das bei Verweis-Typen keine Probleme?
@Martin Soweit ich weiß spielt es hier keine Rolle ob Wert- oder Instanz Typ.
Ein kurzer Test konnte auch nichts anderes zeigen.
https://github.com/Koopakiller/Forum-Samples/blob/master/VariableSwap/VariableSwap/Program.cs