Back to Csharplang

C# Language Design Meeting for August 18th, 2025

meetings/2025/LDM-2025-08-18.md

latest3.4 KB
Original Source

C# Language Design Meeting for August 18th, 2025

Agenda

Quote of the Day

  • "Well, now I can't unsee that." "I can't unsee that either." "Well, it used to be a you problem."

Discussion

C# 15 Kickoff and Themes

Today we took a look through some active topics on the minds of various LDM members for C# 15, which follow below in a somewhat raw form.

[!NOTE] While we will be working on many/most of these topics during the C# 15 timeframe, no release timeframe or guarantee is given at this time. Particularly for highly requested topics like unions, please keep in mind: we'll get there when we get there.

Unions

Champion issue: https://github.com/dotnet/csharplang/issues/8928

We have a lot of union work in progress, and an overview can be found at https://github.com/dotnet/csharplang/blob/c3325533e57dec6aec3266e066e39abf7260e87a/meetings/working-groups/discriminated-unions/union-proposals-overview.md. We'll be continuing design work here and are hopeful that C# 15 will at least have preview versions of features in this area.

Extensions

Champion issue: https://github.com/dotnet/csharplang/issues/8697

C# 14 will deliver the next iteration of extension members, but we did not get to all the member types we want yet. We expect to turn the crank on this in C# 15. Of particular interest are the other basic member types that we haven't implemented yet and disambiguation on methods vs. properties.

Dictionary expressions

Champion issue: https://github.com/dotnet/csharplang/issues/8659

A decent amount of design work went into dictionary expressions in C# 14, but time constraints ultimately meant we did not get to ship them. We'd like to get them over the line for C# 15.

Type inference

Champion issues:

Several type inference proposals have come up at this point, both on their own and as part of unions. We're starting to think there may be a theme of type inference improvements we could make for C# 15.

Continuing the null monad

We have a few proposals around foreach? and await?, maybe it's time to revisit these.

Object initialization

There are a few improvements around object initialization that have been considered for a few years, such as expanded object initializers, init fields, final validators, and more abilities in with expressions.

Top-level methods

A few LDM members have been looking at a proposal around allowing top-level methods more broadly, and also expanding where extension blocks can be declared. We may end up delving further into this.

Caller type name

Of all the caller info attributes, CallerTypeName is one of the most requested.

Switch statement/expression improvements

Block bodies for switch expressions and improvements to the switch statement have been on our minds for a while.