{"id":27033,"date":"2020-04-15T00:00:00","date_gmt":"2020-04-14T22:00:00","guid":{"rendered":"https:\/\/blexin.com\/?p=27033"},"modified":"2021-01-13T09:40:07","modified_gmt":"2021-01-13T08:40:07","slug":"uno-sguardo-al-futuro-c-9","status":"publish","type":"post","link":"https:\/\/blexin.com\/it\/blog\/uno-sguardo-al-futuro-c-9\/","title":{"rendered":"Uno sguardo al futuro: 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=\"27035\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/uno-sguardo-al-futuro-c-9\/attachment\/top00\/\" 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-27035\" 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\">Nel mio precedente articolo (<a href=\"https:\/\/www.blexin.com\/it-IT\/Article\/Blog\/Le-novit-di-C-8-prima-parte-72\" target=\"_blank\" rel=\"noreferrer noopener\">parte prima<\/a>&nbsp;e&nbsp;<a href=\"https:\/\/www.blexin.com\/it-IT\/Article\/Blog\/Le-novit-di-C-8-seconda-parte-74\" target=\"_blank\" rel=\"noreferrer noopener\">parte seconda<\/a>), abbiamo visto le novit\u00e0 introdotte nella versione 8 di C#, ma il team sta gi\u00e0 lavorando alla versione 9, di cui possiamo apprezzare alcune novit\u00e0.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ovviamente, al momento le nuove funzionalit\u00e0 sono ancora in fase di sviluppo e fino al rilascio definitivo potrebbero esserci variazioni a quello che c\u2019\u00e8 attualmente. I pi\u00f9 curiosi, per\u00f2 apprezzeranno uno sguardo al lavoro che il team di Microsoft sta facendo.<\/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\">Una delle novit\u00e0 al vaglio del team semplifica il&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/dotnet\/csharplang\/issues\/2145\" target=\"_blank\">controllo sui valori null&nbsp;<\/a>abbreviando la sintassi attraverso l\u2019utilizzo di una annotazione \u201c!\u201d sul nome del parametro di un metodo:<\/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\">Il<a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/dotnet\/csharplang\/blob\/master\/proposals\/primary-constructors.md\" target=\"_blank\">&nbsp;Primary Constructor<\/a>&nbsp;ha lo scopo di semplificare la dichiarazione delle propriet\u00e0 e dei costruttori di una classe:<\/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\">Il Team vorrebbe che il linguaggio fornisse un modo per impostare un membro di sola lettura negli inizializzatori di oggetti. \u00c8 stato quindi introdotto un nuovo modificatore&nbsp;<em>initonly&nbsp;<\/em>da applicare alle propriet\u00e0 e ai campi.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un&nbsp;<em><a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/dotnet\/csharplang\/blob\/master\/proposals\/recordsv2.md\" target=\"_blank\">Record<\/a>&nbsp;<\/em>pu\u00f2 contenere operatori, metodi e propriet\u00e0. Queste ultime sono, per default, di sola lettura (<em>Immutable Type<\/em>). I&nbsp;<em>Record&nbsp;<\/em>possono essere di tipo valore o tipo riferimento e ci consentono di confrontare l&#8217;uguaglianza strutturale. I&nbsp;<em>Record&nbsp;<\/em>sono utili per rappresentare un dato complesso con molte propriet\u00e0, come un record di database o un DTO. Vediamo un esempio:<\/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\">Quando si lavora con tipi immutabili, in genere, si apportano modifiche a un oggetto costruendo una copia modificata, anzich\u00e9 apportare le modifiche direttamente sull&#8217;oggetto. Con la nuova sintassi si potrebbe invece optare per qualcosa del genere:<\/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\">L&#8217;oggetto&nbsp;<em>newUserName&nbsp;<\/em>risultante sarebbe una copia di&nbsp;<em>userInfo<\/em>, ma con la propriet\u00e0&nbsp;<em>Username<\/em>&nbsp;con valore = &#8220;Vas\u201d. Come abbiamo detto l\u2019uguaglianza tra&nbsp;<em>Record&nbsp;<\/em>viene comparata per struttura e non per referenza:<\/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\">Collegata ai&nbsp;<em>Record&nbsp;<\/em>visti in precedenza, una&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;potrebbe essere un nuovo modo di scrivere una classe astratta e le classi concrete che la implementano. Se ci sono pi\u00f9 definizioni parziali della&nbsp;<em>enum class<\/em>, tutti i membri saranno considerati membri della definizione della classe&nbsp;<em>enum<\/em>. Diversamente da una definizione di classe astratta definita dall&#8217;utente, il tipo root della classe enum \u00e8 parziale per impostazione predefinita ed \u00e8 strutturato in modo da avere solamente un costruttore privato predefinito senza parametri. Non sono consentiti costruttori definiti dall&#8217;utente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Inoltre, nessun tipo pu\u00f2 ereditare direttamente da essa in nessuna dichiarazione, a parte quelli specificati come membri della&nbsp;<em>enum class stessa<\/em>.<\/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\">Le&nbsp;<em>classi enum<\/em>&nbsp;possono anche contenere&nbsp;<em>value member<\/em>, che definiscono le propriet\u00e0 statiche pubbliche di tipo&nbsp;<em>get-only<\/em>&nbsp;sul tipo root e restituiscono il tipo root stesso:<\/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\">Che \u00e8 equivalente a:<\/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\">Simile alle&nbsp;<em><a href=\"https:\/\/github.com\/dotnet\/csharplang\/issues\/75\" target=\"_blank\" rel=\"noreferrer noopener\">discriminated<\/a>&nbsp;<a href=\"https:\/\/github.com\/dotnet\/csharplang\/issues\/399\" target=\"_blank\" rel=\"noreferrer noopener\">union<\/a><\/em>&nbsp;in&nbsp;<a href=\"https:\/\/docs.microsoft.com\/it-it\/dotnet\/fsharp\/\" target=\"_blank\" rel=\"noreferrer noopener\">F#<\/a>&nbsp;(un linguaggio ibrido funzionale \/Object-Oriented appartenente all&#8217;ecosistema .NET), questa feature \u00e8 collegata a quelle precedenti e ci offre un modo per definire e utilizzare tipi di dato che possono contenere qualsiasi numero di tipi diversi tra loro.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Facendo un mix delle funzionalit\u00e0 viste in precedenza, prendiamo in esame il seguente codice:<\/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\">Costruiamo ora le istanze del&nbsp;<em>Record&nbsp;<\/em>e della&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\">Potremmo quindi avere una funzione che ci restituisca uno dei tre tipi appartenenti al root type MixedType (ossia&nbsp;<em>Person<\/em>,&nbsp;<em>int<\/em>,&nbsp;<em>bool<\/em>) su cui poter utilizzare il pattern matching.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A scopo dimostrativo, vediamo ora qualche altro esempio pratico di possibile utilizzo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Gestione delle eccezioni:<\/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\">L\u2019ultima feature che andremo ad esaminare \u00e8 la possibile introduzione di&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/dotnet\/csharplang\/issues\/1350\" target=\"_blank\">tre nuove modalit\u00e0 di valutazione<\/a>&nbsp;di un case di switch:<\/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>Conclusioni<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Direi di fermarci qui, visto che il tutto \u00e8 ancora da definire e gli sviluppatori stanno lavorando duro per semplificarci il lavoro ed introdurre nuove funzionalit\u00e0. Spero di aver stuzzicato la vostra curiosit\u00e0, e se siete interessati, vi rimando al repository di GitHub che contiene tutte le proposte e le discussioni al vaglio del team Microsoft (Dio salvi l\u2019open-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\">Al prossimo articolo! Stay Tuned!<\/p>\n\n\n\n\n","protected":false},"excerpt":{"rendered":"<p>Vediamo insieme cosa ci potrebbe riservare la versione di C# attualmente in via di sviluppo<\/p>\n","protected":false},"author":196716244,"featured_media":27035,"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":[688637374],"tags":[688637382],"class_list":["post-27033","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","tag-c"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Uno sguardo al futuro: 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\/it\/blog\/uno-sguardo-al-futuro-c-9\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Uno sguardo al futuro: C# 9 - Blexin\" \/>\n<meta property=\"og:description\" content=\"Vediamo insieme cosa ci potrebbe riservare la versione di C# attualmente in via di sviluppo\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blexin.com\/it\/blog\/uno-sguardo-al-futuro-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-01-13T08:40:07+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=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Francesco Vastarella\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/uno-sguardo-al-futuro-c-9\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/uno-sguardo-al-futuro-c-9\\\/\"},\"author\":{\"name\":\"Francesco Vastarella\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/#\\\/schema\\\/person\\\/388dae0ca9df603c88b5e41e29cf2d4d\"},\"headline\":\"Uno sguardo al futuro: C# 9\",\"datePublished\":\"2020-04-14T22:00:00+00:00\",\"dateModified\":\"2021-01-13T08:40:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/uno-sguardo-al-futuro-c-9\\\/\"},\"wordCount\":694,\"image\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/uno-sguardo-al-futuro-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\":\"it-IT\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/uno-sguardo-al-futuro-c-9\\\/\",\"url\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/uno-sguardo-al-futuro-c-9\\\/\",\"name\":\"Uno sguardo al futuro: C# 9 - Blexin\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/uno-sguardo-al-futuro-c-9\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/uno-sguardo-al-futuro-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-01-13T08:40:07+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/#\\\/schema\\\/person\\\/388dae0ca9df603c88b5e41e29cf2d4d\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/uno-sguardo-al-futuro-c-9\\\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/uno-sguardo-al-futuro-c-9\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/uno-sguardo-al-futuro-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\\\/it\\\/blog\\\/uno-sguardo-al-futuro-c-9\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/blexin.com\\\/it\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Uno sguardo al futuro: C# 9\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/#website\",\"url\":\"https:\\\/\\\/blexin.com\\\/it\\\/\",\"name\":\"Blexin\",\"description\":\"Con noi \u00e8 semplice\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blexin.com\\\/it\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/#\\\/schema\\\/person\\\/388dae0ca9df603c88b5e41e29cf2d4d\",\"name\":\"Francesco Vastarella\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@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\\\/it\\\/author\\\/francesco-vastarellablexin-com\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Uno sguardo al futuro: 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\/it\/blog\/uno-sguardo-al-futuro-c-9\/","og_locale":"it_IT","og_type":"article","og_title":"Uno sguardo al futuro: C# 9 - Blexin","og_description":"Vediamo insieme cosa ci potrebbe riservare la versione di C# attualmente in via di sviluppo","og_url":"https:\/\/blexin.com\/it\/blog\/uno-sguardo-al-futuro-c-9\/","og_site_name":"Blexin","article_published_time":"2020-04-14T22:00:00+00:00","article_modified_time":"2021-01-13T08:40:07+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":{"Scritto da":"Francesco Vastarella","Tempo di lettura stimato":"5 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blexin.com\/it\/blog\/uno-sguardo-al-futuro-c-9\/#article","isPartOf":{"@id":"https:\/\/blexin.com\/it\/blog\/uno-sguardo-al-futuro-c-9\/"},"author":{"name":"Francesco Vastarella","@id":"https:\/\/blexin.com\/it\/#\/schema\/person\/388dae0ca9df603c88b5e41e29cf2d4d"},"headline":"Uno sguardo al futuro: C# 9","datePublished":"2020-04-14T22:00:00+00:00","dateModified":"2021-01-13T08:40:07+00:00","mainEntityOfPage":{"@id":"https:\/\/blexin.com\/it\/blog\/uno-sguardo-al-futuro-c-9\/"},"wordCount":694,"image":{"@id":"https:\/\/blexin.com\/it\/blog\/uno-sguardo-al-futuro-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":"it-IT"},{"@type":"WebPage","@id":"https:\/\/blexin.com\/it\/blog\/uno-sguardo-al-futuro-c-9\/","url":"https:\/\/blexin.com\/it\/blog\/uno-sguardo-al-futuro-c-9\/","name":"Uno sguardo al futuro: C# 9 - Blexin","isPartOf":{"@id":"https:\/\/blexin.com\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blexin.com\/it\/blog\/uno-sguardo-al-futuro-c-9\/#primaryimage"},"image":{"@id":"https:\/\/blexin.com\/it\/blog\/uno-sguardo-al-futuro-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-01-13T08:40:07+00:00","author":{"@id":"https:\/\/blexin.com\/it\/#\/schema\/person\/388dae0ca9df603c88b5e41e29cf2d4d"},"breadcrumb":{"@id":"https:\/\/blexin.com\/it\/blog\/uno-sguardo-al-futuro-c-9\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blexin.com\/it\/blog\/uno-sguardo-al-futuro-c-9\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/blexin.com\/it\/blog\/uno-sguardo-al-futuro-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\/it\/blog\/uno-sguardo-al-futuro-c-9\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blexin.com\/it\/"},{"@type":"ListItem","position":2,"name":"Uno sguardo al futuro: C# 9"}]},{"@type":"WebSite","@id":"https:\/\/blexin.com\/it\/#website","url":"https:\/\/blexin.com\/it\/","name":"Blexin","description":"Con noi \u00e8 semplice","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blexin.com\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Person","@id":"https:\/\/blexin.com\/it\/#\/schema\/person\/388dae0ca9df603c88b5e41e29cf2d4d","name":"Francesco Vastarella","image":{"@type":"ImageObject","inLanguage":"it-IT","@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\/it\/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-721","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/posts\/27033","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/users\/196716244"}],"replies":[{"embeddable":true,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/comments?post=27033"}],"version-history":[{"count":9,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/posts\/27033\/revisions"}],"predecessor-version":[{"id":27796,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/posts\/27033\/revisions\/27796"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/media\/27035"}],"wp:attachment":[{"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/media?parent=27033"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/categories?post=27033"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/tags?post=27033"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}