Skip to content

null 条件代入 x?.X = ... #492

@ufcpp

Description

@ufcpp

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;
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions