{"id":1340,"date":"2026-06-07T18:00:00","date_gmt":"2026-06-07T17:00:00","guid":{"rendered":"https:\/\/wade.one\/blog\/?p=1340"},"modified":"2026-06-08T20:21:19","modified_gmt":"2026-06-08T20:21:19","slug":"c-sharp-14-field-backed-properties-are-small-but-useful","status":"publish","type":"post","link":"https:\/\/wade.one\/blog\/2026\/06\/07\/c-sharp-14-field-backed-properties-are-small-but-useful\/","title":{"rendered":"C# 14 field-backed Properties Are Small but Useful"},"content":{"rendered":"<p>C# 14&#8217;s field-backed properties are small, but I can see them paying for themselves in ordinary code. They remove one of those bits of boilerplate that is not hard, just repetitive.<\/p>\n<p>The C# 14 docs describe the <a href=\"https:\/\/learn.microsoft.com\/en-us\/dotnet\/csharp\/whats-new\/csharp-14\"><code>field<\/code> keyword<\/a> as a way to write property accessor bodies without declaring an explicit backing field. The compiler supplies the backing field, and the accessor can still do useful work such as trimming a string or rejecting a null value.<\/p>\n<p>That is a good fit for validation-heavy properties. Previously you either used an auto-property and lost the custom logic, or declared a private field just to support a small setter rule. The new form keeps the property compact without hiding the validation. The important behaviour is still right there in the accessor.<\/p>\n<p>There is one caveat: <code>field<\/code> becoming meaningful in the accessor can confuse code that already has a member named <code>field<\/code>. That is manageable, but it is another reason not to get theatrical with the feature. Use it where it removes obvious boilerplate. Leave the code easier to read than it was before.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>C# 14&#8217;s field keyword reduces boilerplate in validation-heavy properties without turning ordinary property code into magic.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[13,25],"tags":[159,163,160,178],"class_list":["post-1340","post","type-post","status-publish","format-standard","hentry","category-programming","category-software-engineer","tag-csharp","tag-csharp-14","tag-dotnet","tag-properties"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>C# 14 field-backed Properties Are Small but Useful - wade.one<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/wade.one\/blog\/2026\/06\/07\/c-sharp-14-field-backed-properties-are-small-but-useful\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"C# 14 field-backed Properties Are Small but Useful - wade.one\" \/>\n<meta property=\"og:description\" content=\"C# 14&#039;s field keyword reduces boilerplate in validation-heavy properties without turning ordinary property code into magic.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wade.one\/blog\/2026\/06\/07\/c-sharp-14-field-backed-properties-are-small-but-useful\/\" \/>\n<meta property=\"og:site_name\" content=\"wade.one\" \/>\n<meta property=\"article:published_time\" content=\"2026-06-07T17:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-08T20:21:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/wade.one\/blog\/wp-content\/uploads\/2015\/02\/Wade-Logo-cropped.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1518\" \/>\n\t<meta property=\"og:image:height\" content=\"1506\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Wade\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@wadewomersley\" \/>\n<meta name=\"twitter:site\" content=\"@wadewomersley\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Wade\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/2026\\\/06\\\/07\\\/c-sharp-14-field-backed-properties-are-small-but-useful\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/2026\\\/06\\\/07\\\/c-sharp-14-field-backed-properties-are-small-but-useful\\\/\"},\"author\":{\"name\":\"Wade\",\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/#\\\/schema\\\/person\\\/f9dedd948575256e77a44aa1417f63de\"},\"headline\":\"C# 14 field-backed Properties Are Small but Useful\",\"datePublished\":\"2026-06-07T17:00:00+00:00\",\"dateModified\":\"2026-06-08T20:21:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/2026\\\/06\\\/07\\\/c-sharp-14-field-backed-properties-are-small-but-useful\\\/\"},\"wordCount\":184,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/#\\\/schema\\\/person\\\/8b4739f8f8bb2cff5d792d4b8779fcc3\"},\"keywords\":[\"csharp\",\"csharp-14\",\"dotnet\",\"properties\"],\"articleSection\":[\"Programming\",\"Software Engineer\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/wade.one\\\/blog\\\/2026\\\/06\\\/07\\\/c-sharp-14-field-backed-properties-are-small-but-useful\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/2026\\\/06\\\/07\\\/c-sharp-14-field-backed-properties-are-small-but-useful\\\/\",\"url\":\"https:\\\/\\\/wade.one\\\/blog\\\/2026\\\/06\\\/07\\\/c-sharp-14-field-backed-properties-are-small-but-useful\\\/\",\"name\":\"C# 14 field-backed Properties Are Small but Useful - wade.one\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/#website\"},\"datePublished\":\"2026-06-07T17:00:00+00:00\",\"dateModified\":\"2026-06-08T20:21:19+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/2026\\\/06\\\/07\\\/c-sharp-14-field-backed-properties-are-small-but-useful\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/wade.one\\\/blog\\\/2026\\\/06\\\/07\\\/c-sharp-14-field-backed-properties-are-small-but-useful\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/2026\\\/06\\\/07\\\/c-sharp-14-field-backed-properties-are-small-but-useful\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/wade.one\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"C# 14 field-backed Properties Are Small but Useful\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/wade.one\\\/blog\\\/\",\"name\":\"wade.one\",\"description\":\"wade womersley - york based software engineer\",\"publisher\":{\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/#\\\/schema\\\/person\\\/8b4739f8f8bb2cff5d792d4b8779fcc3\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/wade.one\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/#\\\/schema\\\/person\\\/8b4739f8f8bb2cff5d792d4b8779fcc3\",\"name\":\"Wade Womersley\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/02\\\/200px.png\",\"url\":\"https:\\\/\\\/wade.one\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/02\\\/200px.png\",\"contentUrl\":\"https:\\\/\\\/wade.one\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/02\\\/200px.png\",\"width\":202,\"height\":200,\"caption\":\"Wade Womersley\"},\"logo\":{\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/02\\\/200px.png\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/wade.one\\\/blog\\\/#\\\/schema\\\/person\\\/f9dedd948575256e77a44aa1417f63de\",\"name\":\"Wade\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/94100ef7361b8aaac136b852c8df93bdd10942165a122d5c56e4466cc403e5d9?s=96&d=retro&r=pg\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/94100ef7361b8aaac136b852c8df93bdd10942165a122d5c56e4466cc403e5d9?s=96&d=retro&r=pg\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/94100ef7361b8aaac136b852c8df93bdd10942165a122d5c56e4466cc403e5d9?s=96&d=retro&r=pg\",\"caption\":\"Wade\"},\"url\":\"https:\\\/\\\/wade.one\\\/blog\\\/author\\\/wade\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"C# 14 field-backed Properties Are Small but Useful - wade.one","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/wade.one\/blog\/2026\/06\/07\/c-sharp-14-field-backed-properties-are-small-but-useful\/","og_locale":"en_GB","og_type":"article","og_title":"C# 14 field-backed Properties Are Small but Useful - wade.one","og_description":"C# 14's field keyword reduces boilerplate in validation-heavy properties without turning ordinary property code into magic.","og_url":"https:\/\/wade.one\/blog\/2026\/06\/07\/c-sharp-14-field-backed-properties-are-small-but-useful\/","og_site_name":"wade.one","article_published_time":"2026-06-07T17:00:00+00:00","article_modified_time":"2026-06-08T20:21:19+00:00","og_image":[{"width":1518,"height":1506,"url":"https:\/\/wade.one\/blog\/wp-content\/uploads\/2015\/02\/Wade-Logo-cropped.png","type":"image\/png"}],"author":"Wade","twitter_card":"summary_large_image","twitter_creator":"@wadewomersley","twitter_site":"@wadewomersley","twitter_misc":{"Written by":"Wade","Estimated reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/wade.one\/blog\/2026\/06\/07\/c-sharp-14-field-backed-properties-are-small-but-useful\/#article","isPartOf":{"@id":"https:\/\/wade.one\/blog\/2026\/06\/07\/c-sharp-14-field-backed-properties-are-small-but-useful\/"},"author":{"name":"Wade","@id":"https:\/\/wade.one\/blog\/#\/schema\/person\/f9dedd948575256e77a44aa1417f63de"},"headline":"C# 14 field-backed Properties Are Small but Useful","datePublished":"2026-06-07T17:00:00+00:00","dateModified":"2026-06-08T20:21:19+00:00","mainEntityOfPage":{"@id":"https:\/\/wade.one\/blog\/2026\/06\/07\/c-sharp-14-field-backed-properties-are-small-but-useful\/"},"wordCount":184,"commentCount":0,"publisher":{"@id":"https:\/\/wade.one\/blog\/#\/schema\/person\/8b4739f8f8bb2cff5d792d4b8779fcc3"},"keywords":["csharp","csharp-14","dotnet","properties"],"articleSection":["Programming","Software Engineer"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/wade.one\/blog\/2026\/06\/07\/c-sharp-14-field-backed-properties-are-small-but-useful\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/wade.one\/blog\/2026\/06\/07\/c-sharp-14-field-backed-properties-are-small-but-useful\/","url":"https:\/\/wade.one\/blog\/2026\/06\/07\/c-sharp-14-field-backed-properties-are-small-but-useful\/","name":"C# 14 field-backed Properties Are Small but Useful - wade.one","isPartOf":{"@id":"https:\/\/wade.one\/blog\/#website"},"datePublished":"2026-06-07T17:00:00+00:00","dateModified":"2026-06-08T20:21:19+00:00","breadcrumb":{"@id":"https:\/\/wade.one\/blog\/2026\/06\/07\/c-sharp-14-field-backed-properties-are-small-but-useful\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wade.one\/blog\/2026\/06\/07\/c-sharp-14-field-backed-properties-are-small-but-useful\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/wade.one\/blog\/2026\/06\/07\/c-sharp-14-field-backed-properties-are-small-but-useful\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/wade.one\/blog\/"},{"@type":"ListItem","position":2,"name":"C# 14 field-backed Properties Are Small but Useful"}]},{"@type":"WebSite","@id":"https:\/\/wade.one\/blog\/#website","url":"https:\/\/wade.one\/blog\/","name":"wade.one","description":"wade womersley - york based software engineer","publisher":{"@id":"https:\/\/wade.one\/blog\/#\/schema\/person\/8b4739f8f8bb2cff5d792d4b8779fcc3"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/wade.one\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":["Person","Organization"],"@id":"https:\/\/wade.one\/blog\/#\/schema\/person\/8b4739f8f8bb2cff5d792d4b8779fcc3","name":"Wade Womersley","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/wade.one\/blog\/wp-content\/uploads\/2015\/02\/200px.png","url":"https:\/\/wade.one\/blog\/wp-content\/uploads\/2015\/02\/200px.png","contentUrl":"https:\/\/wade.one\/blog\/wp-content\/uploads\/2015\/02\/200px.png","width":202,"height":200,"caption":"Wade Womersley"},"logo":{"@id":"https:\/\/wade.one\/blog\/wp-content\/uploads\/2015\/02\/200px.png"}},{"@type":"Person","@id":"https:\/\/wade.one\/blog\/#\/schema\/person\/f9dedd948575256e77a44aa1417f63de","name":"Wade","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/secure.gravatar.com\/avatar\/94100ef7361b8aaac136b852c8df93bdd10942165a122d5c56e4466cc403e5d9?s=96&d=retro&r=pg","url":"https:\/\/secure.gravatar.com\/avatar\/94100ef7361b8aaac136b852c8df93bdd10942165a122d5c56e4466cc403e5d9?s=96&d=retro&r=pg","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/94100ef7361b8aaac136b852c8df93bdd10942165a122d5c56e4466cc403e5d9?s=96&d=retro&r=pg","caption":"Wade"},"url":"https:\/\/wade.one\/blog\/author\/wade\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":1307,"url":"https:\/\/wade.one\/blog\/2026\/05\/19\/c-sharp-14-extension-members-should-reduce-helper-class-noise\/","url_meta":{"origin":1340,"position":0},"title":"C# 14 Extension Members Should Reduce Helper Class Noise","author":"Wade","date":"May 19, 2026","format":false,"excerpt":"C# 14 extension members give teams a cleaner way to express extension properties and static-style helpers, but they still need restraint.","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/wade.one\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1338,"url":"https:\/\/wade.one\/blog\/2026\/06\/06\/c-sharp-14-extension-members-need-restraint\/","url_meta":{"origin":1340,"position":1},"title":"C# 14 Extension Members Need Restraint","author":"Wade","date":"June 6, 2026","format":false,"excerpt":"C# 14 extension members can reduce helper-class noise, but overuse will make APIs harder to understand.","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/wade.one\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1337,"url":"https:\/\/wade.one\/blog\/2026\/06\/05\/dotnet-10-is-about-the-support-window-as-much-as-c-sharp-14\/","url_meta":{"origin":1340,"position":2},"title":".NET 10 Is About the Support Window as Much as C# 14","author":"Wade","date":"June 5, 2026","format":false,"excerpt":".NET 10 matters because it is an LTS release, not only because it brings C# 14 and another round of platform features.","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/wade.one\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1306,"url":"https:\/\/wade.one\/blog\/2026\/05\/18\/dotnet-10-is-the-c-sharp-upgrade-that-matters\/","url_meta":{"origin":1340,"position":3},"title":".NET 10 Is the C# Upgrade That Matters","author":"Wade","date":"May 18, 2026","format":false,"excerpt":".NET 10 matters for C# teams because it is an LTS release, not just because it brings another round of language and tooling features.","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/wade.one\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":665,"url":"https:\/\/wade.one\/blog\/2013\/09\/18\/c-mysqldatareader-one-line-function-to-return-a-row-as-an-instance-of-a-class\/","url_meta":{"origin":1340,"position":4},"title":"C# MySqlDataReader &#8211; &#8220;one line&#8221; function to return a row as an instance of a class.","author":"Wade","date":"September 18, 2013","format":false,"excerpt":"MySql in C# is rather painless using the MySQL Connector for .net, but one thing it is missing is a no-frills, no extra requirements, no pre-defined ERD return a row as an instance of a class function. Coming from a PHP background, I love the PDO function fetchObject(), it's just\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/wade.one\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1298,"url":"https:\/\/wade.one\/blog\/2026\/05\/10\/php-8-5-clone-with-makes-value-objects-less-annoying\/","url_meta":{"origin":1340,"position":5},"title":"PHP 8.5 Clone With Makes Value Objects Less Annoying","author":"Wade","date":"May 10, 2026","format":false,"excerpt":"PHP 8.5's clone-with syntax makes immutable value objects easier to work with, especially around readonly properties.","rel":"","context":"In &quot;PHP&quot;","block_context":{"text":"PHP","link":"https:\/\/wade.one\/blog\/category\/php\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/wade.one\/blog\/wp-json\/wp\/v2\/posts\/1340","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wade.one\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wade.one\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wade.one\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wade.one\/blog\/wp-json\/wp\/v2\/comments?post=1340"}],"version-history":[{"count":1,"href":"https:\/\/wade.one\/blog\/wp-json\/wp\/v2\/posts\/1340\/revisions"}],"predecessor-version":[{"id":1363,"href":"https:\/\/wade.one\/blog\/wp-json\/wp\/v2\/posts\/1340\/revisions\/1363"}],"wp:attachment":[{"href":"https:\/\/wade.one\/blog\/wp-json\/wp\/v2\/media?parent=1340"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wade.one\/blog\/wp-json\/wp\/v2\/categories?post=1340"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wade.one\/blog\/wp-json\/wp\/v2\/tags?post=1340"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}