C#で値の入れ替え(Swap)
すごいテクニックとかじゃないです,ごめんなさい
昔作ったソースを久しぶりに開いたらR#先生から新しい教えをいただいたのでメモ
お題
2つの数値(a,b)の入れ替えをします
昔の
var a = 1; var b = 2; var temp = a; a = b; b = temp; Console.WriteLine($"a={a} , b={b}"); // a=2 , b=1
プログラミングの勉強始めて1日目に書くコードですね. どんな言語でも同じような感じだとおもいます
新しい教え
var a = 1; var b = 2; (a, b) = (b, a); Console.WriteLine($"a={a} , b={b}");
3行が1行になった!!
違い
↑の二つが同じものになるとは思えなかったので,ビルド後の生成物の値の入れ替え部分だけdnSpyでサクッと見てみます
昔の
int a = 1; int b = 2; int num = a; a = b; b = num;
新しいの
int a = 1; int b = 2; int num = b; int num2 = a; a = num; b = num2;
新しい方はテンポラリー用の変数が増えています.デスヨネーという感じでですがまぁ誤差です.速度やメモリを気にする方は要注意でしょうか
まとめ
最近(?)のC#のバージョンからこのように書けるようになったんだと思いますが,これは私的には非常にありですね.
それにしてもこれをヒントで出してくれるR#先生(トップ画像)がすごいと思いました. おしまい