{"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_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.7 - 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":1306,"url":"https:\/\/wade.one\/blog\/2026\/05\/18\/dotnet-10-is-the-c-sharp-upgrade-that-matters\/","url_meta":{"origin":1340,"position":1},"title":".NET 10 Is the C# Upgrade That Matters","author":"","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":2},"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":3},"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":[]},{"id":1109,"url":"https:\/\/wade.one\/blog\/2023\/03\/26\/php-8-2-vs-7-4\/","url_meta":{"origin":1340,"position":4},"title":"PHP 8.2 vs 7.4","author":"Wade","date":"March 26, 2023","format":false,"excerpt":"PHP is a widely used programming language that has been evolving rapidly in recent years. PHP 8.2 is the latest release, which came out on November 25th, 2021. This version brings several improvements, new features, and bug fixes, making it more efficient and secure than PHP 7.4. In this blog\u2026","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":[]},{"id":1172,"url":"https:\/\/wade.one\/blog\/2026\/04\/05\/what-makes-an-api-feel-nice-to-work-with\/","url_meta":{"origin":1340,"position":5},"title":"What Makes an API Feel Nice to Work With","author":"Wade","date":"April 5, 2026","format":false,"excerpt":"A good API is not just functional. It is predictable, consistent, and easy to use without a lot of guesswork.","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":[]}],"_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}]}}