dotnet / dotnet/csharplang

[Proposal]: Null conditional assignment (VS 18.0, .NET 10)

Open
#8,677 0 comments 0 reactions 1 assignee Claimed by @RikkiGibson View on GitHub
Implemented Needs ECMA Spec Proposal Proposal champion
Dominant language
C#
Stars
12.7k
Forks
1.1k
Avg merge
11h 1m
Merged PRs (30d)
3

Description

* Speclet: https://github.com/dotnet/csharplang/blob/main/proposals/csharp-14.0/null-conditional-assignment.md
* Discussion: https://github.com/dotnet/csharplang/discussions/8676

## Summary
[summary]: #summary

Permits assignment to occur conditionally within a `a?.b` or `a?[b]` expression.

```cs
using System;

class C
{
public object obj;
}

void M(C? c)
{
c?.obj = new object();
}
```

```cs
using System;

class C
{
public event Action E;
}

void M(C? c)
{
c?.E += () => { Console.WriteLine("handled event E"); };
}
```

```cs
void M(object[]? arr)
{
arr?[42] = new object();
}
```

## Design meetings
- https://github.com/dotnet/csharplang/blob/main/meetings/2022/LDM-2022-04-27.md#null-conditional-assignment
- https://github.com/dotnet/csharplang/blob/main/meetings/2022/LDM-2022-08-31.md#null-conditional-assignment
- https://github.com/dotnet/csharplang/blob/main/meetings/2022/LDM-2022-10-26.md#null-conditional-assignment
- https://github.com/dotnet/csharplang/blob/main/meetings/2024/LDM-2024-10-28.md#increment-and-decrement-operators-in-null-conditional-access

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.