初期化を1行で!C#VBで複数の変数に一括代入する

2021年3月18日木曜日

C#

t f B! P L

複数の変数に同じ値を代入して初期化するとき、普通に1行ごとに書くと、次のようにコードが冗長になったりするとこがあります。

int a = 0;
int b = 0;
int c = 0;

C#では、複数の変数に同じ値を代入することが可能です。一括代入をすることで、冗長なコードを1行で書くことができ、コードがスッキリしたりします。(使いすぎはNG)

では、複数の変数に値を一括で代入する方法を見ていきましょう。

スポンサーリンク

一括代入

値の代入には=演算子を使用しますが、変数に同じ値を同時に代入する際には、この=を連続で記述して最も右辺にある値を左側の変数に代入します。

次の例は、変数abに数値の「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#ライフを!

スポンサーリンク

QooQ