代入演算子とは
代入演算子は、変数に値を割り当てるために使用されます。以下に、よく使用される代入演算子とその使い方を示します。
int a = 5;
今まで何気なく使っていた「=」ですが、代入演算子は左辺の値を右辺の値に設定する意味です。
数学的には変なのですが、次のような使い方も出来ます。
int a = 5;
a = a + 5;//aと言う変数に5を加えた値を改めて変数に代入する
Console.WriteLine(a); //結果は10
複合代入演算子とは
複合代入演算子とは代入演算子に算術演算子などを合わせたものです。
演算子 | 説明 | 例 | 結果 |
+= | 加算して代入 | a += 3 | aに3を加えた値 |
-= | 減算して代入 | a -= 4 | aから4を引いた値 |
*= | 乗算して代入 | a *= 2 | aを2倍した値 |
/= | 除算して代入 | a /= 3 | aを3で割った値 |
%= | 余りを求めて代入 | a %= 3 | aを3で割った余り |
代入演算子を使用する際の注意事項
データ型には大きく分けて値型と参照型があります。大きな違いに値の格納の仕方が異なることにあります。
int x = 1;
int y = x;
x += 10;
Console.WriteLine(x);//結果は11
Console.WriteLine(y);//結果は1
//StringBuilderクラスを使用する場合には
//ソースコードの先頭に「using System.Text;」
//とusing文を追加する必要がある
StringBuilder sb1 = new StringBuiter("あいう");
StringBuilder sb2 = sb1;
sb1.Append("えお");
Console.WriteLine(sb1.ToString());//結果はあいうえお
Console.WriteLine(sb2.ToString());//結果はあいうえお
intは値型ですので変数にもそのままの値を代入し、xが変更されても、yが変更されることはありません。
ところがStringBuilderクラスは参照型であり、「=」で代入するとsb1のアドレスをsb2にコピーしています。従って、sb1に与えた変更がsb2にも反映されることになります。
まとめ
今回は代入演算子について学びました。今まで何気なく使用していた「=」がそれで左側に設定した変数に右側の値を設定するものでした。
ここでは注意事項としてデータ型には値型と参照型の2種類があることで、代入した時に動作が異なるということです。現在のところでは値型は殆どが数値型、その他は殆どが参照型と思って頂いても大丈夫です。
参照型の場合、代入をしてしまうと、参照元のアドレス(コンピュータのメモリを格納する場所)を代入することになり、参照元の内容を変更すると、参照先の内容も変わってしまうという見た目じゃ分からない不具合を引き起こす場合があります。参照型の場合、アドレスを設定したのか、新たに作る(コンストラクタを用いて初期化する)のとでは区別するようにしてください。
コメント