meetings/2025/LDM-2025-08-18.md
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.
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.
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.
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.
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.
We have a few proposals around foreach? and await?, maybe it's time to revisit these.
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.
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.
Of all the caller info attributes, CallerTypeName is one of the most requested.
Block bodies for switch expressions and improvements to the switch statement have been on our minds for a while.