Feedback

C# - Variablenwerte tauschen

Veröffentlicht von am 3/26/2017
(2 Bewertungen)
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;
}
Abgelegt unter C#7, Swap, Tupel.

2 Kommentare zum Snippet

Martin Dauskardt schrieb am 3/28/2017:
Gibt das bei Verweis-Typen keine Probleme?
Koopakiller schrieb am 3/28/2017:
@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
 

Logge dich ein, um hier zu kommentieren!