演習 - 変数の値の設定と取得
変数はデータの一時的なストレージ コンテナーであるため、"書き込み" および "読み取り" を目的としたものとなっています。 次の演習で、両方の操作を行う機会があります。
演習 - 変数の使用
この演習では、変数の宣言、変数への値の割り当て、変数値の取得などを行います。
初めての変数を作成する
.NET エディターですべてのコードを選択し、Delete または Backspace キーを押して削除します。
コード エディターで次のコードを入力します。
string firstName; firstName = "Bob";
変数を宣言するには、使うデータ型に続けて変数の名前を入力します。 変数に値を割り当てるには、"代入演算子" を使用します。これは、単一の等号文字 =
です。
Note
値の割り当ては、"変数の設定" または単に "設定" 操作とも呼ばれます。
変数に値を不適切に割り当てる
割り当ては右から左に行われることに注意することが重要です。 つまり、C# コンパイラは、まず代入演算子の右辺の値を理解する必要があり、それにより、代入演算子の左辺にある変数への代入を実行できるようになります。 この順序を逆にすると、C# コンパイラを混乱させることになります。
記述したコードを次のコードに合わせて修正します。
string firstName; "Bob" = firstName;
次にコードを実行します。 出力コンソールに次のエラーが表示されます。
(2,1): error CS0131: The left-hand side of an assignment must be a variable, property or indexer
正しくないデータ型の値を変数に不適切に割り当てる
C# は型を適用するように設計されていることを学習しました。 変数を使うとき、"型の適用" とは、あるデータ型の値を、別のデータ型を保持するように宣言された変数に割り当てることができないことを意味します。
記述したコードを次のコードに合わせて修正します。
int firstName; firstName = "Bob";
次にコードを実行します。 出力コンソールに次のエラーが表示されます。
(2,9): error CS0029: Cannot implicitly convert type 'string' to 'int'
エラー メッセージに、C# コンパイラがバックグラウンドで実行しようとしていることが示されます。 文字列 "Bob" を "暗黙的に変換" して int 値にする試みが行われましたが、それは不可能です。 それでも、C# は変換を試みますが、"Bob" という単語に相当する数値がないため失敗します。
暗黙的および明示的な型変換について詳しくは、後で学習します。 今のところは、変数は指定されたデータ型と一致する値のみを保持できる、ということだけ覚えておいてください。
変数に格納した値を取得する
変数から値を取得するには、変数の名前を使用するだけです。 この例では、変数の値を設定してから、その値を取得してコンソールに表示します。
記述したコードを次のコードに合わせて修正します。
string firstName; firstName = "Bob"; Console.WriteLine(firstName);
次にコードを実行します。 出力コンソールに次の結果が表示されます。
Bob
変数から値を取得することは、"変数の取得" または単に "取得" 操作とも呼ばれます。
コード行を記述すると、コンパイラによってコードがチェックされ、間違っているかもしれない箇所が指摘されることがわかります。 コンパイラは、より早く正しいコードにするのに役立つ優れたツールです。 さまざまな種類のエラーについてわかったので、コンパイラのエラー メッセージの助けを借りて、間違いをすばやく修正できます。
変数の値を割り当て直す
変数の再利用と再割り当ては、何度でも行うことができます。 この例は、その考え方を説明します。
記述したコードを次のコードに合わせて修正します。
string firstName; firstName = "Bob"; Console.WriteLine(firstName); firstName = "Liem"; Console.WriteLine(firstName); firstName = "Isabella"; Console.WriteLine(firstName); firstName = "Yasmin"; Console.WriteLine(firstName);
次にコードを実行します。 出力コンソールに次の結果が表示されます。
Bob Liem Isabella Yasmin
変数を初期化する
変数から値を "取得する" には、その前に変数に値を "設定する" 必要があります。 そうしないと、エラーが表示されます。
記述したコードを次のコードに合わせて修正します。
string firstName; Console.WriteLine(firstName);
次にコードを実行します。 出力コンソールに次の結果が表示されます。
(2,19): error CS0165: Use of unassigned local variable 'firstName'
ローカル変数が未割り当てのままにならないようにするため、変数を宣言したらできるだけ早く値を設定することをお勧めします。
実際には、変数の宣言と、変数の値の設定の両方を 1 行のコードで実行することができます。 この手法は、"変数" の初期化と呼ばれます。
記述したコードを次のコードに合わせて修正します。
string firstName = "Bob"; Console.WriteLine(firstName);
次にコードを実行します。 次の出力が表示されます。
Bob
まとめ
ここまで、変数の使用について次のことを学習しました。
- 変数から値を取り出す (取得する) には、事前に変数に値を割り当てて (設定して) おく必要があります。
- 変数を初期化するには、宣言の時点で変数に値を割り当てます。
- 割り当ては右から左に行われます。
- 代入演算子として 1 つの等号文字を使用します。
- 変数から値を取得するには、変数の名前を使用するだけです。