UfcppSample
UfcppSample copied to clipboard
null 条件代入 `x?.X = ...`
trafficstars
csharplang 6045 https://github.com/dotnet/csharplang/blob/main/proposals/csharp-14.0/null-conditional-assignment.md
x?.X = v; が if (x != null) x.X = v; に。
= 演算子の優先順位の低さを考えると (x?.X) = v; っぽく見えて気持ち悪いものの、需要は高いので。
式の途中に書くのも、右辺側ならできそう(var y = (x?.X = v); とかできちゃう。 x が null なら y も null)。
複合代入も可。
var a = new A { X = new() };
for (int i = 0; i < 100; i++)
{
a.X?.Value += 1;
a.Y?.Value += 1;
}
Console.WriteLine(a.X?.Value);
Console.WriteLine(a.Y?.Value);
class Count
{
public int Value;
}
class A
{
public Count? X;
public Count? Y;
}