- 359 名前:デフォルトの名無しさん mailto:sage [2019/04/13(土) 11:21:31.91 ID:umtct5vHa.net]
- >>353
int a, b, c; void Reset() { a = 1; b = 2; c = 3; } Reset(); ref int x = ref a; x = (true ? b : c); // 普通の条件演算子 x = 4; // xの参照先はaのままなのでaが変わる Console.WriteLine($"{a} {b} {c}"); // 4 2 3 Reset(); ref int y = ref a; y = (true ? ref b :ref c); // 条件演算子の2項目と3項目にrefはあるが、条件演算子の前にrefはない→参照でなく値が代入されるだけ(上と同じ) y = 4; // yの参照先はaのままなのでaが変わる(ここでハマってそう) Console.WriteLine($"{a} {b} {c}"); // 4 2 3 Reset(); ref int z = ref a; z = ref (true ? ref b : ref c); // 条件演算子の前にrefがある→zの参照先が変わる z = 4; // zの参照先がbになったのでbが変わる Console.WriteLine($"{a} {b} {c}"); // 1 4 3 // https://ufcpp.net/study/csharp/sp_ref.html?p=2#conditional-ref もどうぞ
|

|