プログラムの事とか

お約束ですが「掲載内容は私個人の見解です」

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#先生(トップ画像)がすごいと思いました. おしまい