<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/let-s-catch-up-with-c-exciting-new-features-in-c-9-to-c-14---filip-ekberg---62d7pypgj" -->

---
title: Let’s catch up with C#! Exciting new features in C# 9 to...
description: A conference talk walks through the evolution of C# from version 9 to 14, covering nullable reference types, records, pattern matching (type, positional,...
canonical: https://daily.dev/posts/let-s-catch-up-with-c-exciting-new-features-in-c-9-to-c-14---filip-ekberg---62d7pypgj
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Let’s catch up with C#! Exciting new features in C# 9 to C# 14! - Filip Ekberg - | daily.dev
og:description: A conference talk walks through the evolution of C# from version 9 to 14, covering nullable reference types, records, pattern matching (type, positional,...
og:url: https://daily.dev/posts/let-s-catch-up-with-c-exciting-new-features-in-c-9-to-c-14---filip-ekberg---62d7pypgj
og:image: https://api.daily.dev/og/posts/62d7pyPGJ.png
og:image:alt: Let’s catch up with C#! Exciting new features in C# 9 to C# 14! - Filip Ekberg -
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Let’s catch up with C#! Exciting new features in C# 9 to C# 14! - Filip Ekberg -

**[NDC Conferences](https://daily.dev/sources/ndc)** · 59 min read · 3 upvotes · 0 comments

## Summary

A conference talk walks through the evolution of C# from version 9 to 14, covering nullable reference types, records, pattern matching (type, positional, property, list, and slice patterns), primary constructors, collection expressions, the field keyword, lock objects, extension members (extensions everything), and the null conditional assignment operator. The speaker demonstrates these features live in Visual Studio, explains .NET's yearly release cadence and LTS misconceptions, discusses the withdrawn parameter null-checking feature, and previews upcoming C# 15/16 features like union types and potential runtime-level async/await support.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.youtube.com/watch?v=REOSBsfGejo>

## Questions this post answers

### What did C# 14 add to the field keyword feature?

C# 14 made the field keyword a fully supported, first-class part of the language, removing the need to opt in via preview mode as required in C# 13. It lets a property reference an automatically generated backing field directly without declaring a private field manually, though a manual field named 'field' in existing code can cause a naming collision, which is why it originally shipped as a breaking-change preview feature.

_Track how C# keeps evolving property syntax on daily.dev before it changes your next refactor._

### Why was the parameter null-checking feature removed from the C# compiler after being merged?

The C# compiler team withdrew parameter null-checking, sometimes written with a double bang, after it had already been merged, because community feedback said it was too intrusive and unnecessary since developers can add their own null checks. The rollback caused problems because internal Microsoft teams had already updated their code to use the feature before it was reverted.

_Follow which experimental C# features actually ship versus get pulled on daily.dev before adopting previews._

### When is the union types feature expected to land in C#?

Union types were merged into the C# compiler a few months prior and are expected to arrive in C# 15, allowing developers to group dissimilar but related object types into a single container type, which works especially well alongside pattern matching. Despite being merged, the feature could still be pulled back or marked experimental if issues are found, potentially pushing it to C# 16 instead.

_Keep tabs on C# 15 feature stability on daily.dev before planning code around union types._

---

Tags: [#.net](https://daily.dev/tags/.net), [#c#](https://daily.dev/tags/c#)

[View this post on daily.dev](https://daily.dev/posts/let-s-catch-up-with-c-exciting-new-features-in-c-9-to-c-14---filip-ekberg---62d7pypgj)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Let’s catch up with C#! Exciting new features in C# 9 to C# 14! - Filip Ekberg -","url":"https://daily.dev/posts/let-s-catch-up-with-c-exciting-new-features-in-c-9-to-c-14---filip-ekberg---62d7pypgj","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/let-s-catch-up-with-c-exciting-new-features-in-c-9-to-c-14---filip-ekberg---62d7pypgj"},"datePublished":"2026-09-01T13:31:31.230Z","dateModified":"2026-09-01T13:31:53.786Z","description":"A conference talk walks through the evolution of C# from version 9 to 14, covering nullable reference types, records, pattern matching (type, positional,...","image":"https://i.ytimg.com/vi/REOSBsfGejo/sddefault.jpg","thumbnailUrl":"https://i.ytimg.com/vi/REOSBsfGejo/sddefault.jpg","isAccessibleForFree":true,"articleSection":"NDC Conferences","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"NDC Conferences","logo":"https://media.daily.dev/image/upload/s--SiIyojEj--/f_auto/v1748760369/logos/ndc","url":"https://daily.dev/sources/ndc"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/let-s-catch-up-with-c-exciting-new-features-in-c-9-to-c-14---filip-ekberg---62d7pypgj","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":3},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":".net,c#","timeRequired":"PT59M","video":{"@type":"VideoObject","name":"Let’s catch up with C#! Exciting new features in C# 9 to C# 14! - Filip Ekberg -","description":"A conference talk walks through the evolution of C# from version 9 to 14, covering nullable reference types, records, pattern matching (type, positional,...","thumbnailUrl":"https://i.ytimg.com/vi/REOSBsfGejo/sddefault.jpg","uploadDate":"2026-09-01T13:31:31.230Z","duration":"PT59M","url":"https://api.daily.dev/r/62d7pyPGJ","embedUrl":"https://www.youtube.com/embed/REOSBsfGejo"}}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"NDC Conferences","item":"https://daily.dev/sources/ndc"},{"@type":"ListItem","position":3,"name":"Let’s catch up with C#! Exciting new features in C# 9 to C# 14! - Filip Ekberg -"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/let-s-catch-up-with-c-exciting-new-features-in-c-9-to-c-14---filip-ekberg---62d7pypgj#faq","mainEntity":[{"@type":"Question","name":"What did C# 14 add to the field keyword feature?","acceptedAnswer":{"@type":"Answer","text":"C# 14 made the field keyword a fully supported, first-class part of the language, removing the need to opt in via preview mode as required in C# 13. It lets a property reference an automatically generated backing field directly without declaring a private field manually, though a manual field named 'field' in existing code can cause a naming collision, which is why it originally shipped as a breaking-change preview feature. Track how C# keeps evolving property syntax on daily.dev before it changes your next refactor."}},{"@type":"Question","name":"Why was the parameter null-checking feature removed from the C# compiler after being merged?","acceptedAnswer":{"@type":"Answer","text":"The C# compiler team withdrew parameter null-checking, sometimes written with a double bang, after it had already been merged, because community feedback said it was too intrusive and unnecessary since developers can add their own null checks. The rollback caused problems because internal Microsoft teams had already updated their code to use the feature before it was reverted. Follow which experimental C# features actually ship versus get pulled on daily.dev before adopting previews."}},{"@type":"Question","name":"When is the union types feature expected to land in C#?","acceptedAnswer":{"@type":"Answer","text":"Union types were merged into the C# compiler a few months prior and are expected to arrive in C# 15, allowing developers to group dissimilar but related object types into a single container type, which works especially well alongside pattern matching. Despite being merged, the feature could still be pulled back or marked experimental if issues are found, potentially pushing it to C# 16 instead. Keep tabs on C# 15 feature stability on daily.dev before planning code around union types."}}]}
```

