時々見かける、こんな感じのコード。
int a, b, c;
a = b = c = 0;
代入演算子を連続して記述する
と右から順に値が格納されるらしい。
だから、以下のコードはエラーになる。
object x;
fuga f;
f = x = new fuga();
理由は、fuga オブジェクトが object 型の変数 x に格納された値を格納しようとしているから。
つまり、object 型の x の値は、fuga 型の f に格納できないのでエラーになる。
そこで、以下のクラスを用意してみる。
class hoge
{
private int _b, _c;
public int A { get; set; }
public int B {
get { return _b; }
set { _b = value + 1; }
}
public int C {
get { return _c; }
set { _c = value + 1; }
}
}
そして、以下のようなコードを書いて実行した結果が以下。
var x = new hoge();
x.A = x.B = x.C = 0;
Console.WriteLine(x.A); // 0
Console.WriteLine(x.B); // 1
Console.WriteLine(x.C); // 1
Console.ReadLine();
さて問題です
どうして、上から「2, 2, 1」と表示されないのでしょうか?