{"id":611,"date":"2021-10-31T13:20:28","date_gmt":"2021-10-31T13:20:28","guid":{"rendered":"https:\/\/turtleflyblog.com\/?p=611"},"modified":"2022-02-28T09:17:38","modified_gmt":"2022-02-28T09:17:38","slug":"c-record-2","status":"publish","type":"post","link":"https:\/\/turtleflyblog.com\/en\/2021\/10\/31\/c-record-2\/","title":{"rendered":"C# Record"},"content":{"rendered":"\n

After .net 5 came up, a new C# 9 mechanism called Record <\/strong>has drawn C# developer much attention. Record has both Reference Type and Value Type features. It is used to store data like struct, <\/strong>however as it is Reference Type, it has behaviors like encapsulate and inheritance. Hence we can use record <\/strong>to store DTO data. This article will introduce record feature.<\/p>\n\n\n\n

\"\"<\/figure>\n\n\n\n

Employee inherit Person record<\/p>\n\n\n\n

\"\"<\/figure>\n\n\n\n

In C# 9, we just have to write a single new<\/strong> word to initialize record or class variable. As you can see is that Person record only contains data, which is like struct<\/strong>. Employee also has Person same attributes like Name and Age. Therefore, Employee inherits from Person. we can use Person and Employee record to have both class<\/strong> and struct <\/strong>functions.<\/p>\n\n\n\n

The output is shown below<\/p>\n\n\n\n

\"\"<\/figure>\n\n\n\n

When we compare two Record type variable, it uses value type to compare. Person josh and joshSecond has same attributes\u2019 value, so the compare result is true. Nevertheless, record is reference type, so when we use object.ReferenceEquals, <\/strong>the result returns to false.<\/p>\n\n\n\n

\"\"<\/figure>\n\n\n\n

What is the output of ToString<\/strong>()?<\/p>\n\n\n\n

\"\"<\/figure>\n\n\n\n

The output is<\/p>\n\n\n\n

\"\"<\/figure>\n\n\n\n

with-expression<\/strong><\/p>\n\n\n\n

when we want to change record <\/strong>variable value, we will realize that we can\u2019t because record is immutable.<\/p>\n\n\n\n

\"\"<\/figure>\n\n\n\n

This is the time we use with-expression<\/p>\n\n\n\n

\"\"<\/figure>\n\n\n\n

Before we can use struct <\/strong>to store data as it occupies less memory size than class<\/strong>. However, struct does not have some reference type behaviors, in so scenarios the developers will have to decide which variable type to use to store data. Record <\/strong>solves this problems and it gives the developer an optimal choice to select.<\/p>\n","protected":false},"excerpt":{"rendered":"

After .net 5 came up, a new C# 9 mechanism called Record has drawn C# developer much attention. Record has both Reference Type and Value Type features. It is used to store data like struct, however as it is Reference Type, it has behaviors like encapsulate and inheritance. Hence we can use record to store […]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"nf_dc_page":"","om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[33],"tags":[],"class_list":["post-611","post","type-post","status-publish","format-standard","hentry","category-programming-2"],"yoast_head":"\nC# Record - Who said turtle cannot fly<\/title>\n<meta name=\"description\" content=\"After .net 5 came up, a new C# 9 mechanism called Record has drawn C# developer much attention. Record has both Reference Type and Value Type features. It is used to store data like struct, however as it is Reference Type, it has behaviors like encapsulate and inheritance. Hence we can use record to store DTO data. This article will introduce record feature.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/turtleflyblog.com\/en\/2021\/10\/31\/c-record-2\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"C# Record - Who said turtle cannot fly\" \/>\n<meta property=\"og:description\" content=\"After .net 5 came up, a new C# 9 mechanism called Record has drawn C# developer much attention. Record has both Reference Type and Value Type features. It is used to store data like struct, however as it is Reference Type, it has behaviors like encapsulate and inheritance. Hence we can use record to store DTO data. This article will introduce record feature.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/turtleflyblog.com\/en\/2021\/10\/31\/c-record-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Who said turtle cannot fly\" \/>\n<meta property=\"article:published_time\" content=\"2021-10-31T13:20:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-02-28T09:17:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/turtleflyblog.com\/wp-content\/uploads\/2021\/10\/1-2.png\" \/>\n<meta name=\"author\" content=\"Joseph\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Joseph\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/turtleflyblog.com\/en\/2021\/10\/31\/c-record-2\/\",\"url\":\"https:\/\/turtleflyblog.com\/en\/2021\/10\/31\/c-record-2\/\",\"name\":\"C# Record - Who said turtle cannot fly\",\"isPartOf\":{\"@id\":\"https:\/\/turtleflyblog.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/turtleflyblog.com\/en\/2021\/10\/31\/c-record-2\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/turtleflyblog.com\/en\/2021\/10\/31\/c-record-2\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/turtleflyblog.com\/wp-content\/uploads\/2021\/10\/1-2.png\",\"datePublished\":\"2021-10-31T13:20:28+00:00\",\"dateModified\":\"2022-02-28T09:17:38+00:00\",\"author\":{\"@id\":\"https:\/\/turtleflyblog.com\/#\/schema\/person\/130c2e1bdce4a8ba27bfe14c65988172\"},\"description\":\"After .net 5 came up, a new C# 9 mechanism called Record has drawn C# developer much attention. Record has both Reference Type and Value Type features. It is used to store data like struct, however as it is Reference Type, it has behaviors like encapsulate and inheritance. Hence we can use record to store DTO data. This article will introduce record feature.\",\"breadcrumb\":{\"@id\":\"https:\/\/turtleflyblog.com\/en\/2021\/10\/31\/c-record-2\/#breadcrumb\"},\"inLanguage\":\"en-AU\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/turtleflyblog.com\/en\/2021\/10\/31\/c-record-2\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-AU\",\"@id\":\"https:\/\/turtleflyblog.com\/en\/2021\/10\/31\/c-record-2\/#primaryimage\",\"url\":\"https:\/\/i0.wp.com\/turtleflyblog.com\/wp-content\/uploads\/2021\/10\/1-2.png?fit=570%2C98&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/turtleflyblog.com\/wp-content\/uploads\/2021\/10\/1-2.png?fit=570%2C98&ssl=1\",\"width\":570,\"height\":98},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/turtleflyblog.com\/en\/2021\/10\/31\/c-record-2\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/turtleflyblog.com\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"C# Record\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/turtleflyblog.com\/#website\",\"url\":\"https:\/\/turtleflyblog.com\/\",\"name\":\"Who said turtle cannot fly\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/turtleflyblog.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-AU\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/turtleflyblog.com\/#\/schema\/person\/130c2e1bdce4a8ba27bfe14c65988172\",\"name\":\"Joseph\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-AU\",\"@id\":\"https:\/\/turtleflyblog.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/539caa7bc4af75cd4ab82fc8d51935da?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/539caa7bc4af75cd4ab82fc8d51935da?s=96&d=mm&r=g\",\"caption\":\"Joseph\"},\"sameAs\":[\"https:\/\/turtleflyblog.com\/\/\"],\"url\":\"https:\/\/turtleflyblog.com\/author\/joseph\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"C# Record - Who said turtle cannot fly","description":"After .net 5 came up, a new C# 9 mechanism called Record has drawn C# developer much attention. Record has both Reference Type and Value Type features. It is used to store data like struct, however as it is Reference Type, it has behaviors like encapsulate and inheritance. Hence we can use record to store DTO data. This article will introduce record feature.","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:\/\/turtleflyblog.com\/en\/2021\/10\/31\/c-record-2\/","og_locale":"en_US","og_type":"article","og_title":"C# Record - Who said turtle cannot fly","og_description":"After .net 5 came up, a new C# 9 mechanism called Record has drawn C# developer much attention. Record has both Reference Type and Value Type features. It is used to store data like struct, however as it is Reference Type, it has behaviors like encapsulate and inheritance. Hence we can use record to store DTO data. This article will introduce record feature.","og_url":"https:\/\/turtleflyblog.com\/en\/2021\/10\/31\/c-record-2\/","og_site_name":"Who said turtle cannot fly","article_published_time":"2021-10-31T13:20:28+00:00","article_modified_time":"2022-02-28T09:17:38+00:00","og_image":[{"url":"https:\/\/turtleflyblog.com\/wp-content\/uploads\/2021\/10\/1-2.png"}],"author":"Joseph","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Joseph","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/turtleflyblog.com\/en\/2021\/10\/31\/c-record-2\/","url":"https:\/\/turtleflyblog.com\/en\/2021\/10\/31\/c-record-2\/","name":"C# Record - Who said turtle cannot fly","isPartOf":{"@id":"https:\/\/turtleflyblog.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/turtleflyblog.com\/en\/2021\/10\/31\/c-record-2\/#primaryimage"},"image":{"@id":"https:\/\/turtleflyblog.com\/en\/2021\/10\/31\/c-record-2\/#primaryimage"},"thumbnailUrl":"https:\/\/turtleflyblog.com\/wp-content\/uploads\/2021\/10\/1-2.png","datePublished":"2021-10-31T13:20:28+00:00","dateModified":"2022-02-28T09:17:38+00:00","author":{"@id":"https:\/\/turtleflyblog.com\/#\/schema\/person\/130c2e1bdce4a8ba27bfe14c65988172"},"description":"After .net 5 came up, a new C# 9 mechanism called Record has drawn C# developer much attention. Record has both Reference Type and Value Type features. It is used to store data like struct, however as it is Reference Type, it has behaviors like encapsulate and inheritance. Hence we can use record to store DTO data. This article will introduce record feature.","breadcrumb":{"@id":"https:\/\/turtleflyblog.com\/en\/2021\/10\/31\/c-record-2\/#breadcrumb"},"inLanguage":"en-AU","potentialAction":[{"@type":"ReadAction","target":["https:\/\/turtleflyblog.com\/en\/2021\/10\/31\/c-record-2\/"]}]},{"@type":"ImageObject","inLanguage":"en-AU","@id":"https:\/\/turtleflyblog.com\/en\/2021\/10\/31\/c-record-2\/#primaryimage","url":"https:\/\/i0.wp.com\/turtleflyblog.com\/wp-content\/uploads\/2021\/10\/1-2.png?fit=570%2C98&ssl=1","contentUrl":"https:\/\/i0.wp.com\/turtleflyblog.com\/wp-content\/uploads\/2021\/10\/1-2.png?fit=570%2C98&ssl=1","width":570,"height":98},{"@type":"BreadcrumbList","@id":"https:\/\/turtleflyblog.com\/en\/2021\/10\/31\/c-record-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/turtleflyblog.com\/en\/"},{"@type":"ListItem","position":2,"name":"C# Record"}]},{"@type":"WebSite","@id":"https:\/\/turtleflyblog.com\/#website","url":"https:\/\/turtleflyblog.com\/","name":"Who said turtle cannot fly","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/turtleflyblog.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-AU"},{"@type":"Person","@id":"https:\/\/turtleflyblog.com\/#\/schema\/person\/130c2e1bdce4a8ba27bfe14c65988172","name":"Joseph","image":{"@type":"ImageObject","inLanguage":"en-AU","@id":"https:\/\/turtleflyblog.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/539caa7bc4af75cd4ab82fc8d51935da?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/539caa7bc4af75cd4ab82fc8d51935da?s=96&d=mm&r=g","caption":"Joseph"},"sameAs":["https:\/\/turtleflyblog.com\/\/"],"url":"https:\/\/turtleflyblog.com\/author\/joseph\/"}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/turtleflyblog.com\/wp-json\/wp\/v2\/posts\/611","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/turtleflyblog.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/turtleflyblog.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/turtleflyblog.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/turtleflyblog.com\/wp-json\/wp\/v2\/comments?post=611"}],"version-history":[{"count":1,"href":"https:\/\/turtleflyblog.com\/wp-json\/wp\/v2\/posts\/611\/revisions"}],"predecessor-version":[{"id":651,"href":"https:\/\/turtleflyblog.com\/wp-json\/wp\/v2\/posts\/611\/revisions\/651"}],"wp:attachment":[{"href":"https:\/\/turtleflyblog.com\/wp-json\/wp\/v2\/media?parent=611"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/turtleflyblog.com\/wp-json\/wp\/v2\/categories?post=611"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/turtleflyblog.com\/wp-json\/wp\/v2\/tags?post=611"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}