2021年12月28日
川俣晶の縁側ソフトウェアnew_C#入門・全キーワード明快解説! total 683 count

代入演算子(=演算子): 変数は出たり入ったり大忙し

Written By: 川俣 晶連絡先

この章のテーマ §

 代入演算子(=演算子)について学びます。

前提知識 §

Console.WriteLineメソッド, 文字列の基礎, 変数の基礎, 配列, int型

解説 §

 代入演算子(=演算子)は変数等に値または参照を格納します。

 必ず覚えて頂きたいことは2つあります。

 1つめは、代入演算子の右側は左辺値と呼ばれ、自由な式を書くことができないことです。たとえば、1という数値は書き換えることができません。左辺値にはなれません。変数aなら左辺値にできます。変数は書き換えられるからです。

 2つめは、値型は値を代入するが、参照型は参照を代入することです。参照とは、住所のようなもので、そのオブジェクトの場所を覚えておくだけの情報です。ですから、その場所のオブジェクトの中味が改訂されれば、参照が同じでも取得する値は改訂後の値になります。値型なら値のコピーが作られるので、いくらもとのデータを改訂しても、改訂前の複製が残るだけです。

 サンプルソースの場合、配列は参照型ですが、配列のメンバーの数値は値型です。ですから、配列そのもの(参照)を代入した場合と、配列のメンバー(値)を代入した場合では挙動が変わります。

罠の数々 §

  • 一致を比較する演算子==と、代入演算子=は別物である。機能は全く似ていないので混同しないこと
  • 変数宣言で初期値を指定する=と、代入演算子=は別物である。かなり使い方は似ているが細部に異なる部分がある

参考リンク §

代入演算子 (C# リファレンス)

サンプルソース: assignmentOperator §

int[] array = new int[1];

array[0] = 123;

Console.WriteLine($"array[0]={array[0]}");

int x;

int[] y;

// 値型の代入

x = array[0];

// 参照型の代入

y = array;

Console.WriteLine("値の更新 (参照は更新しない)");

array[0] = 456;

Console.WriteLine($"array[0]={array[0]}");

Console.WriteLine($"x={x}");

Console.WriteLine($"y={y[0]}");

実行結果 §

array[0]=123

値の更新 (参照は更新しない)

array[0]=456

x=123

y=456

リポジトリ §

https://github.com/autumn009/CSharpPrimer2

練習問題 §

 左辺値(代入演算子の左側にできるもの)として間違っているのはどれだろうか。

 ただし、aはint型の変数名。arrayはint型の一次元配列名とする。

  1. a
  2. array
  3. array[a]
  4. array[a+1]
  5. array[a]+1

[[解答]]

単行本情報