# C# Language Design Meeting for August 18th, 2025

## Agenda

- [C# 15 Kickoff and Themes](#c-15-kickoff-and-themes)
    - [Unions](#unions)
    - [Extensions](#extensions)
    - [Dictionary expressions](#dictionary-expressions)
    - [Type inference](#type-inference)
    - [Continuing the null monad](#continuing-the-null-monad)
    - [Object initialization](#object-initialization)
    - [Top-level methods](#top-level-methods)
    - [Caller type name](#caller-type-name)
    - [Switch statement/expression improvements](#switch-statementexpression-improvements)

## 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:
* https://github.com/dotnet/csharplang/issues/9453
* https://github.com/dotnet/csharplang/issues/9626
* https://github.com/dotnet/csharplang/issues/9627

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.
