{"id":27045,"date":"2020-04-15T00:00:00","date_gmt":"2020-04-14T22:00:00","guid":{"rendered":"https:\/\/blexin.com\/uno-sguardo-al-futuro-c-9\/"},"modified":"2021-05-20T18:27:00","modified_gmt":"2021-05-20T16:27:00","slug":"a-look-to-the-future-c-9","status":"publish","type":"post","link":"https:\/\/blexin.com\/en\/blog-en\/a-look-to-the-future-c-9\/","title":{"rendered":"A look to the future: C# 9"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"608\" data-attachment-id=\"27036\" data-permalink=\"https:\/\/blexin.com\/en\/blog-en\/a-look-to-the-future-c-9\/attachment\/top00-2\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/top00.png?fit=1024%2C608&amp;ssl=1\" data-orig-size=\"1024,608\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"top00\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/top00.png?fit=1024%2C608&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/top00.png?resize=1024%2C608&#038;ssl=1\" alt=\"\" class=\"wp-image-27036\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/top00.png 1024w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/top00-980x582.png 980w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/top00-480x285.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">In my&nbsp;previous article (<a href=\"https:\/\/www.blexin.com\/en-US\/Article\/Blog\/New-features-of-C-8-part-one-72\" target=\"_blank\" rel=\"noreferrer noopener\">part one<\/a>&nbsp;and&nbsp;<a href=\"https:\/\/www.blexin.com\/en-US\/Article\/Blog\/New-features-of-C-8-part-two-74\" target=\"_blank\" rel=\"noreferrer noopener\">part two<\/a>), we saw the news features introduced in version 8 of C #, but the team is already working on version 9, and we can appreciate some changes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Obviously, at the moment the new features are still under development and until the final release there might be some variations. The most curious ones, however, will appreciate a look at the work that the Microsoft Developer Team is doing.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Simplified Parameter NULL Validation Code<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">One of the changes under consideration by the team simplifies the&nbsp;<a href=\"https:\/\/github.com\/dotnet\/csharplang\/issues\/2145\" target=\"_blank\" rel=\"noreferrer noopener\">control over null values&nbsp;<\/a>by shortening the syntax using an annotation &#8220;!&#8221; on a method parameter name:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\n\/\/ Before:\nvoid Insert(string s) \n{\n    if (s is null)\n        throw new ArgumentNullException(nameof(s));\n}\n \n\/\/ After:\nvoid Insert(string s!) \n{\n}\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\"><strong>Primary Constructors<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The&nbsp;<em><a href=\"https:\/\/github.com\/dotnet\/csharplang\/blob\/master\/proposals\/primary-constructors.md\" target=\"_blank\" rel=\"noreferrer noopener\">Primary Constructor&nbsp;<\/a><\/em>has the purpose of simplifying the declaration of properties and constructors of a class:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\n\/\/ Before:\nclass Person\n{\n    private string _name;\n \n    public Person(string name)\n    {\n        _name = name;\n    }\n \n    public string Name\n    {\n        get =&gt; _name;\n        set {\n                if (value == null) \n                {\n                   throw new NullArgumentException(nameof(Name)); \n                }\n                 _name = value;\n            }\n    }\n}\n \n\/\/ After:\nclass Person(string name)\n{\n    public string Name\n    {\n        get =&gt; name;\n        set\n        {\n            if (value == null)\n            {\n               throw new NullArgumentException(nameof(Name));\n            }\n            name = value;\n        }\n    }\n}\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\"><strong>Record<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The team would like to provide a way to set up a read-only member in the objects\u2019 initializers. therefore, a new&nbsp;<em>initonly&nbsp;<\/em>modifier has been introduced to be applied to properties and fields.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A<a href=\"https:\/\/github.com\/dotnet\/csharplang\/blob\/master\/proposals\/recordsv2.md\" target=\"_blank\" rel=\"noreferrer noopener\">&nbsp;Record&nbsp;<\/a>can contain operators, methods and properties. By default, the latter are read-only (<em>Immutable Type<\/em>). The&nbsp;<em>Records&nbsp;<\/em>can be of a value type or a reference type and allow us to compare structural equality.&nbsp;<em>Records&nbsp;<\/em>are useful for representing complex data with many properties, such as a database record or a DTO. Let&#8217;s see an example:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\ndata class UserInfo\n{\n    public string Username { get; }\n    public string Email { get; }\n    public bool IsAdmin { get; } = false;\n}\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">When working with immutable types, you generally make changes to an object by building a modified copy of it instead of making the changes directly on the object. Now you could opt instead for something like this:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nvar userInfo = new UserInfo() \n{\n    Username = &quot;Francesco&quot;,\n    Email = &quot;francesco@microsoft.com&quot;,\n    IsAdmin = true\n};\nvar newUserName = userInfo with { Username = &quot;Vas&quot; };\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">The resulting&nbsp;<em>newUserName&nbsp;<\/em>object would be a copy of userInfo, but with the Username property with the value = &#8220;Vas&#8221;. As we said, the equality between&nbsp;<em>Records&nbsp;<\/em>is compared by structure and not by reference:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nvar userInfo1 = new UserInfo() {\n    Username = &quot;Francesco&quot;,\n    Email = &quot;francesco@microsoft.com&quot;,\n    IsAdmin = true\n};\nvar userInfo2 = new UserInfo() \n{\n    Username = &quot;Francesco&quot;,\n    Email = &quot;francesco@microsoft.com&quot;,\n    IsAdmin = true\n};\nvar compareUsersInfo = userInfo1 == userInfo2; \/\/ true\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\"><strong>Enum class<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Linked to the&nbsp;<em>Records&nbsp;<\/em>seen previously, an&nbsp;<em><a href=\"https:\/\/github.com\/dotnet\/csharplang\/blob\/master\/proposals\/discriminated-unions.md\" target=\"_blank\" rel=\"noreferrer noopener\">enum class<\/a><\/em>&nbsp;could be a new way of writing an abstract class and the concrete classes that implement it. If there are multiple partial definitions of the&nbsp;<em>enum class<\/em>, all members will be considered members of the definition of the&nbsp;<em>enum class<\/em>. Unlike a user-defined abstract class definition, the root type of the enum class is partial by default, and it is structured to have only a default private constructor, without parameters. User-defined constructors are not allowed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Furthermore, no type can inherit directly from it in any declaration, other than those specified as members of the&nbsp;<em>enum class<\/em>&nbsp;itself.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\n\/\/ If we had this situation:\npublic partial abstract class Shape { }\n \npublic class Rectangle : Shape {\n \n  public double Width { get; }\n  public double Length { get; }\n \n  public Rectangle(double Width, double Length){\n    this.Width = Width;\n    this.Length = Length;\n  }\n}\n \npublic class Circle : Shape {\n \n  public double Radius { get; }\n \n  public Circle(double Radius)\n  {\n    this.Radius = Radius;\n  }\n}\n \n\/\/ It could be:\nenum class Shape\n{\n  Rectangle(double Width, double Length);\n  Circle(double Radius);\n}\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">The&nbsp;<em>enum classes<\/em>&nbsp;can also contain&nbsp;<em>value members<\/em>, which define public static properties of type&nbsp;<em>get-only<\/em>&nbsp;on the root type and return the root type itself:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nenum class Color\n{\n    Red, Green\n}\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">which is equivalent to<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\npartial abstract class Color\n{\n    public static Color Red =&gt; ...;\n    public static Color Green =&gt; ...;\n}\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\"><strong>Discriminated Unions<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Similar to<a href=\"https:\/\/github.com\/dotnet\/csharplang\/issues\/75\" target=\"_blank\" rel=\"noreferrer noopener\">&nbsp;discriminated<\/a>&nbsp;<a href=\"https:\/\/github.com\/dotnet\/csharplang\/issues\/399\" target=\"_blank\" rel=\"noreferrer noopener\">union<\/a>in&nbsp;<a href=\"https:\/\/docs.microsoft.com\/it-it\/dotnet\/fsharp\/\" target=\"_blank\" rel=\"noreferrer noopener\">F#<\/a>&nbsp;(a functional \/ Object-Oriented hybrid language of .NET world), this feature is connected to the previous ones and offers a way to define and use data types that can contain any number of different types.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mixing the features seen above, let&#8217;s take a look at the following code:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\npublic class Person  \/\/ Define a record type\n{  \n  public initonly string Firstname { get; }  \n  public initonly string Lastname { get; }  \n};  \n \nenum class IntOrBool { int I; bool B; }  \/\/ Define an enum class\n \nenum class MixedType \/\/ Define an enum class\n{\n    Person P;\n    IntOrBool Union;\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Now let&#8217;s create the instances of the&nbsp;<em>Record&nbsp;<\/em>and the&nbsp;<em>Union<\/em>:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nvar person = new Person()  \n{  \n  Firstname = \u201cFrancesco\u201d;  \n  Lastname = \u201cVas\u201d;  \n};  \n   \nvar unionRecord = new MixedType.P(person); \/\/ Record C# 9  \nvar unionTypeInt = new MixedType.Union(I 86); \/\/ Int type\nvar unionTypeBool = new MixedType.Union(B false); \/\/ Boolean type\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Therefore, we could have a function that returns one of the three types belonging to the&nbsp;<em>MixedType&nbsp;<\/em>root type (that is&nbsp;<em>Person<\/em>,&nbsp;<em>int<\/em>,&nbsp;<em>bool<\/em>) on which we can use the pattern matching.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For demonstration purposes, let&#8217;s see some other examples of possible use.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Exception handling:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\ntry { ... }\ncatch (CommunicationException|SystemException ex) {\n    \/\/ Handle the exception\n}\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Pattern matching:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nif (result is short|int|long number) { ... }\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Type constraint:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\npublic class GenericClass&lt;T&gt; where T : T1 | T2 | T3\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Typed heterogeneous collections:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nvar inputs = new List&lt;int|double|string&gt;{3, 9.9, &quot;abc&quot;};\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\"><strong>And, or, and not patterns<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The last feature we are going to examine is the possible implementation of<a href=\"https:\/\/github.com\/dotnet\/csharplang\/issues\/1350\" target=\"_blank\" rel=\"noreferrer noopener\">&nbsp;three new ways of evaluating<\/a>&nbsp;a switch case:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nswitch (obj)\n{\n    case 1 or 2:\n    case Point(0, 0) or null:\n    case Point(var x, var y) and var p:\n}\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\"><strong>Conclusions<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Good. I think it\u2019s enough! As we said, everything is still to be defined, and the developers are working hard to simplify our work and introduce new features.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I hope I have aroused your curiosity, and if you are interested, I invite you to visit the GitHub repository which contains all the proposals and discussions under consideration by the Microsoft Team (God save the open-source!):<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/dotnet\/csharplang\/milestone\/15\">https:\/\/github.com\/dotnet\/csharplang\/milestone\/15<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Stay tuned!<\/p>\n\n\n\n\n","protected":false},"excerpt":{"rendered":"<p>Let\u2019s see together what the version of C# currently under development could reserve for us<\/p>\n","protected":false},"author":196716244,"featured_media":27036,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"off","_et_pb_old_content":"","_et_gb_content_width":"","_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","_crdt_document":"","inline_featured_image":false,"_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},"_wpas_customize_per_network":false,"jetpack_post_was_ever_published":false},"categories":[688637524],"tags":[688637384],"class_list":["post-27045","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog-en","tag-c-en"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>A look to the future: C# 9 - Blexin<\/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:\/\/blexin.com\/en\/blog-en\/a-look-to-the-future-c-9\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"A look to the future: C# 9 - Blexin\" \/>\n<meta property=\"og:description\" content=\"Let\u2019s see together what the version of C# currently under development could reserve for us\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blexin.com\/en\/blog-en\/a-look-to-the-future-c-9\/\" \/>\n<meta property=\"og:site_name\" content=\"Blexin\" \/>\n<meta property=\"article:published_time\" content=\"2020-04-14T22:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-05-20T16:27:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i1.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/top00.png?fit=1024%2C608&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"608\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Francesco Vastarella\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Francesco Vastarella\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blexin.com\\\/en\\\/blog-en\\\/a-look-to-the-future-c-9\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/en\\\/blog-en\\\/a-look-to-the-future-c-9\\\/\"},\"author\":{\"name\":\"Francesco Vastarella\",\"@id\":\"https:\\\/\\\/blexin.com\\\/en\\\/#\\\/schema\\\/person\\\/388dae0ca9df603c88b5e41e29cf2d4d\"},\"headline\":\"A look to the future: C# 9\",\"datePublished\":\"2020-04-14T22:00:00+00:00\",\"dateModified\":\"2021-05-20T16:27:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/en\\\/blog-en\\\/a-look-to-the-future-c-9\\\/\"},\"wordCount\":698,\"image\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/en\\\/blog-en\\\/a-look-to-the-future-c-9\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/blexin.com\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/top00.png?fit=1024%2C608&ssl=1\",\"keywords\":[\"C#\"],\"articleSection\":[\"Blog\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blexin.com\\\/en\\\/blog-en\\\/a-look-to-the-future-c-9\\\/\",\"url\":\"https:\\\/\\\/blexin.com\\\/en\\\/blog-en\\\/a-look-to-the-future-c-9\\\/\",\"name\":\"A look to the future: C# 9 - Blexin\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/en\\\/blog-en\\\/a-look-to-the-future-c-9\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/en\\\/blog-en\\\/a-look-to-the-future-c-9\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/blexin.com\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/top00.png?fit=1024%2C608&ssl=1\",\"datePublished\":\"2020-04-14T22:00:00+00:00\",\"dateModified\":\"2021-05-20T16:27:00+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/en\\\/#\\\/schema\\\/person\\\/388dae0ca9df603c88b5e41e29cf2d4d\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/en\\\/blog-en\\\/a-look-to-the-future-c-9\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blexin.com\\\/en\\\/blog-en\\\/a-look-to-the-future-c-9\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/blexin.com\\\/en\\\/blog-en\\\/a-look-to-the-future-c-9\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/blexin.com\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/top00.png?fit=1024%2C608&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/blexin.com\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/top00.png?fit=1024%2C608&ssl=1\",\"width\":1024,\"height\":608},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blexin.com\\\/en\\\/blog-en\\\/a-look-to-the-future-c-9\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/blexin.com\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"A look to the future: C# 9\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blexin.com\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/blexin.com\\\/en\\\/\",\"name\":\"Blexin\",\"description\":\"Con noi \u00e8 semplice\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blexin.com\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blexin.com\\\/en\\\/#\\\/schema\\\/person\\\/388dae0ca9df603c88b5e41e29cf2d4d\",\"name\":\"Francesco Vastarella\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3b8deedae8f35372d5fba49f918006fb0a58a2943aff6ae52d3ff188e0c441bb?s=96&d=identicon&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3b8deedae8f35372d5fba49f918006fb0a58a2943aff6ae52d3ff188e0c441bb?s=96&d=identicon&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3b8deedae8f35372d5fba49f918006fb0a58a2943aff6ae52d3ff188e0c441bb?s=96&d=identicon&r=g\",\"caption\":\"Francesco Vastarella\"},\"url\":\"https:\\\/\\\/blexin.com\\\/en\\\/author\\\/francesco-vastarellablexin-com\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"A look to the future: C# 9 - Blexin","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:\/\/blexin.com\/en\/blog-en\/a-look-to-the-future-c-9\/","og_locale":"en_US","og_type":"article","og_title":"A look to the future: C# 9 - Blexin","og_description":"Let\u2019s see together what the version of C# currently under development could reserve for us","og_url":"https:\/\/blexin.com\/en\/blog-en\/a-look-to-the-future-c-9\/","og_site_name":"Blexin","article_published_time":"2020-04-14T22:00:00+00:00","article_modified_time":"2021-05-20T16:27:00+00:00","og_image":[{"width":1024,"height":608,"url":"https:\/\/i1.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/top00.png?fit=1024%2C608&ssl=1","type":"image\/png"}],"author":"Francesco Vastarella","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Francesco Vastarella","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blexin.com\/en\/blog-en\/a-look-to-the-future-c-9\/#article","isPartOf":{"@id":"https:\/\/blexin.com\/en\/blog-en\/a-look-to-the-future-c-9\/"},"author":{"name":"Francesco Vastarella","@id":"https:\/\/blexin.com\/en\/#\/schema\/person\/388dae0ca9df603c88b5e41e29cf2d4d"},"headline":"A look to the future: C# 9","datePublished":"2020-04-14T22:00:00+00:00","dateModified":"2021-05-20T16:27:00+00:00","mainEntityOfPage":{"@id":"https:\/\/blexin.com\/en\/blog-en\/a-look-to-the-future-c-9\/"},"wordCount":698,"image":{"@id":"https:\/\/blexin.com\/en\/blog-en\/a-look-to-the-future-c-9\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/top00.png?fit=1024%2C608&ssl=1","keywords":["C#"],"articleSection":["Blog"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/blexin.com\/en\/blog-en\/a-look-to-the-future-c-9\/","url":"https:\/\/blexin.com\/en\/blog-en\/a-look-to-the-future-c-9\/","name":"A look to the future: C# 9 - Blexin","isPartOf":{"@id":"https:\/\/blexin.com\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blexin.com\/en\/blog-en\/a-look-to-the-future-c-9\/#primaryimage"},"image":{"@id":"https:\/\/blexin.com\/en\/blog-en\/a-look-to-the-future-c-9\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/top00.png?fit=1024%2C608&ssl=1","datePublished":"2020-04-14T22:00:00+00:00","dateModified":"2021-05-20T16:27:00+00:00","author":{"@id":"https:\/\/blexin.com\/en\/#\/schema\/person\/388dae0ca9df603c88b5e41e29cf2d4d"},"breadcrumb":{"@id":"https:\/\/blexin.com\/en\/blog-en\/a-look-to-the-future-c-9\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blexin.com\/en\/blog-en\/a-look-to-the-future-c-9\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blexin.com\/en\/blog-en\/a-look-to-the-future-c-9\/#primaryimage","url":"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/top00.png?fit=1024%2C608&ssl=1","contentUrl":"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/top00.png?fit=1024%2C608&ssl=1","width":1024,"height":608},{"@type":"BreadcrumbList","@id":"https:\/\/blexin.com\/en\/blog-en\/a-look-to-the-future-c-9\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blexin.com\/en\/"},{"@type":"ListItem","position":2,"name":"A look to the future: C# 9"}]},{"@type":"WebSite","@id":"https:\/\/blexin.com\/en\/#website","url":"https:\/\/blexin.com\/en\/","name":"Blexin","description":"Con noi \u00e8 semplice","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blexin.com\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blexin.com\/en\/#\/schema\/person\/388dae0ca9df603c88b5e41e29cf2d4d","name":"Francesco Vastarella","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/3b8deedae8f35372d5fba49f918006fb0a58a2943aff6ae52d3ff188e0c441bb?s=96&d=identicon&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/3b8deedae8f35372d5fba49f918006fb0a58a2943aff6ae52d3ff188e0c441bb?s=96&d=identicon&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3b8deedae8f35372d5fba49f918006fb0a58a2943aff6ae52d3ff188e0c441bb?s=96&d=identicon&r=g","caption":"Francesco Vastarella"},"url":"https:\/\/blexin.com\/en\/author\/francesco-vastarellablexin-com\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/top00.png?fit=1024%2C608&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/pcyUBx-72d","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/blexin.com\/en\/wp-json\/wp\/v2\/posts\/27045","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blexin.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blexin.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blexin.com\/en\/wp-json\/wp\/v2\/users\/196716244"}],"replies":[{"embeddable":true,"href":"https:\/\/blexin.com\/en\/wp-json\/wp\/v2\/comments?post=27045"}],"version-history":[{"count":9,"href":"https:\/\/blexin.com\/en\/wp-json\/wp\/v2\/posts\/27045\/revisions"}],"predecessor-version":[{"id":31931,"href":"https:\/\/blexin.com\/en\/wp-json\/wp\/v2\/posts\/27045\/revisions\/31931"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blexin.com\/en\/wp-json\/wp\/v2\/media\/27036"}],"wp:attachment":[{"href":"https:\/\/blexin.com\/en\/wp-json\/wp\/v2\/media?parent=27045"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blexin.com\/en\/wp-json\/wp\/v2\/categories?post=27045"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blexin.com\/en\/wp-json\/wp\/v2\/tags?post=27045"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}