複数の変数に同じ値を代入して初期化するとき、普通に1行ごとに書くと、次のようにコードが冗長になったりするとこがあります。
int a = 0;
int b = 0;
int c = 0;
C#では、複数の変数に同じ値を代入することが可能です。一括代入をすることで、冗長なコードを1行で書くことができ、コードがスッキリしたりします。(使いすぎはNG)
では、複数の変数に値を一括で代入する方法を見ていきましょう。
スポンサーリンク
一括代入
値の代入には=
演算子を使用しますが、変数に同じ値を同時に代入する際には、この=
を連続で記述して最も右辺にある値を左側の変数に代入します。
次の例は、変数a
とb
に数値の「1」を一括で代入するコードです。
a = b = 1; // 1を「変数a」「変数b」に代入
ある変数の値を、他の変数に一括で代入したい場合も同じように、値を代入したい変数を最も右辺に書きます。
int a, b;
int c = 124;
// 「変数c」の値を「変数a」「変数b」に代入
a = b = c;
変数宣言時に値を一括代入
変数を宣言するときに一括代入する場合、カンマで区切った各変数ごとに値を代入する必要があります。
int a = 0, b = 0;
次のように書いてしまうと、変数b
にしか値が入らないので注意しましょう。
int a, b = 123;
System.Console.WriteLine($"a={a}"); // [ERROR]割り当てられていないローカル変数 `a 'の使用です
System.Console.WriteLine($"b={b}"); // b=123
タプル(tuple)を使うという方法
通常タプル(tuple)は、メソッドの戻り値で複数の値を返すときに使用するが、別に用途が限定されている訳ではないでの、タプルは変数の値を一括で初期化する用途でも使える。
(int sum, int count) = (200, 10);
※ 上のコードを実行するには、「.Net Framework 4.7」以上の環境である必要があります。
VBは一括代入できない
同じ .NET Frameworkで動いているのだから、VBでも複数の変数へ一括代入できるんでしょ?と思われる方もいると思いますが、残念ながらVBにはC#のように一括代入を行うような言語構文は用意されていません。
1行でまとめて初期化する方法としては、VBでは「:(コロン)」で区切って複数のステートメントを1行に書くことが可能であるため、それを利用して複数の変数に値を代入する処理を1行で書くことも可能です。
a = 1 : b = 1;
まとめ
C#で変数に値を一括代入する方法を解説してきました。
一括代入を使うことで、これまで複数行にわたって冗長的に書かれていた初期化が1行でスッキリ書けたりもしますが、その反面、あまり多様すると可読性が損なわれたりもするので、ほどほどに使いましょう。
では、よいC#ライフを!
0 件のコメント:
コメントを投稿