Tag: c-sharp

C# 7 Tuple e Pattern Matching

Due novità davvero interessanti introdotte all’interno di C# 7.0 sono le Tuple ed il Pattern Matching. Non si tratta di vere e proprie novità, ma di migliorie consento di scrivere codice sempre più compatto e di facile lettura. [visual-link-preview encoded=”eyJ0eXBlIjoiZXh0ZXJuYWwiLCJwb3N0IjowLCJwb3N0X2xhYmVsIjoiIiwidXJsIjoiaHR0cHM6Ly9hbWVybGluLmtlYW50ZXguY29tL25vdml0YS1jLTctMC1hY2Nlc3NvLWFpLWRhdGkvIiwiaW1hZ2VfaWQiOi0xLCJpbWFnZV91cmwiOiJodHRwczovL2FtZXJsaW4ua2VhbnRleC5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMTcvMTIvYy1zaGFycC5wbmciLCJ0aXRsZSI6Ik5vdml0w6AgQyMgNy4wIEFjY2Vzc28gYWkgZGF0aSIsInN1bW1hcnkiOiJVbmEgZGVsbGUgcHJpbmNpcGFsaSBub3ZpdMOgIHByZXNlbnRpIGluIGMtc2hhcnAgNy4wIMOoIGzigJlpbnRyb2R1emlvbmUgZGVsIHBhdHRlcm4gbWF0Y2hpbmcgY2hlIGNvbnNlbnRlIGRpIHNlbXBsaWZpY2FyZSBsbyBzdmlsdXBwbyBkaSBjb2RpY2UgZnVuemlvbmFsZS4gTm92aXTDoCBDIyA3LjAgQWNjZXNzbyBhaSBkYXRpIiwidGVtcGxhdGUiOiJ1c2VfZGVmYXVsdF9mcm9tX3NldHRpbmdzIn0=”] In questo precedente articolo è stato trattato l’utilizzo delle tuple.

Read More

Classi astratte Vs Interfacce

L’utlizzo di classi astratte può essere spesso confuso con l’utilizzo delle interfacce. In questo articolo vengono descritte le differenze tra i due costrutti e quando utilizzarle. [visual-link-preview encoded=”eyJ0eXBlIjoiZXh0ZXJuYWwiLCJwb3N0IjowLCJwb3N0X2xhYmVsIjoiIiwidXJsIjoiaHR0cHM6Ly9hbWVybGluLmtlYW50ZXguY29tL2NsYXNzaS1hc3RyYXR0ZS1lZC1pbnRlcmZhY2NlLyIsImltYWdlX2lkIjotMSwiaW1hZ2VfdXJsIjoiaHR0cHM6Ly9hbWVybGluLmtlYW50ZXguY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDE4LzAxL2Fic3RyYWN0LWNsYXNzLXZzLWludGVyZmFjZTEuanBnIiwidGl0bGUiOiJDbGFzc2kgYXN0cmF0dGUgZWQgSW50ZXJmYWNjZSIsInN1bW1hcnkiOiJVbmEgZGVsbGUgZG9tYW5kZSBjaGUgc29saXRhbWVudGUgbWkgdmllbmUgcG9zdGEgbmVsbOKAmWFtYml0byBkZWxsYSBwcm9ncmFtbWF6aW9uZSBhZCBvZ2dldHRpIHJpZ3VhcmRhIGzigJl1dGlsaXp6byBkaSBjbGFzc2kgYXN0cmF0dGkgZSBkaSBpbnRlcmZhY2NlLkNvc2Egc29ubyBsZSBjbGFzc2kgYXN0cmF0dGU/IEUgbGUgaW50ZXJmYWNjZT8gUXVhbmRvIHVzYXJlIHVuYSBvIGzigJlhbHRyYT8gSW4gcXVlc3RvIGFydGljb2xvIHByb3ZlcmVtbyBhIGZhcmUgdW4gcG8gZGkgY2hpYXJlenphLiBDbGFzc2kgYXN0cmF0dGUgZWQgaW7igKYiLCJ0ZW1wbGF0ZSI6InVzZV9kZWZhdWx0X2Zyb21fc2V0dGluZ3MifQ==”]

Read More

Programmazione asincrona e codice misto

Nello sviluppo di codice sincrono, spesso abbiamo la necessità di implementare particolari funzioni asincrone. L’implementazione di codice “misto” sincrono ed asincrono può generare alcuni problemi nell’operatività e nel flusso di escuzione. In questo articolo vengono descritte alcune problematiche note. [visual-link-preview encoded=”eyJ0eXBlIjoiZXh0ZXJuYWwiLCJwb3N0IjowLCJwb3N0X2xhYmVsIjoiIiwidXJsIjoiaHR0cHM6Ly9hbWVybGluLmtlYW50ZXguY29tL3Byb2dyYW1tYXppb25lLWFzaW5jcm9uYS1jb2RpY2UtbWlzdG8vIiwiaW1hZ2VfaWQiOi0xLCJpbWFnZV91cmwiOiJodHRwczovL2FtZXJsaW4ua2VhbnRleC5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMTcvMTIvcHJvZ3JhbW1hemlvbmUtYXN5bmMtYXdhaXQuanBnIiwidGl0bGUiOiJQcm9ncmFtbWF6aW9uZSBhc2luY3JvbmEgY29kaWNlIG1pc3RvIiwic3VtbWFyeSI6IkxvIHN2aWx1cHBvIGRpIGNvZGljZSBhc2luY3Jvbm8gc2kgYXJ0aWNvbGEgbmVsbGEgY3JlYXppb25lIGRpIGFsdHJvIGNvZGljZSBhc2luY3Jvbm8uIEXigJkgc2VtcGNlIGNvbnNpZ2xpYWJpbGUgbm9uIHV0aWxpenphcmUgY29kaWNlIG1pc3RvLiBMYSBwcm9ncmFtbWF6aW9uZSBhc2luY3JvbmEgY29kaWNlIG1pc3RvIHB1w7IgY29tcG9ydGFyZSBsYSBnZW5lcmF6aW9uZSBkaSBjb21wb3J0YW1lbnRpIGluYXNwZXR0YXRpIGNvbWUgaWwgZGVhZGxvY2siLCJ0ZW1wbGF0ZSI6InVzZV9kZWZhdWx0X2Zyb21fc2V0dGluZ3MifQ==”]

Read More

Programmazione asincrona e void

Nel corso degli articoli legati alla programmazione asincrona, è opportuno trattare le funzioni asincrone di tipo void. Questo tipo di approccio è sconsigliato perchè può generare alcuni problemi piuttosto significativi nel flusso delle nostre applicazioni. In questo articolo vengono trattate alcune di queste problematiche. [visual-link-preview encoded=”eyJ0eXBlIjoiZXh0ZXJuYWwiLCJwb3N0IjowLCJwb3N0X2xhYmVsIjoiIiwidXJsIjoiaHR0cHM6Ly9hbWVybGluLmtlYW50ZXguY29tL3Byb2dyYW1tYXppb25lLWFzaW5jcm9uYS1lLXZvaWQvIiwiaW1hZ2VfaWQiOi0xLCJpbWFnZV91cmwiOiJodHRwczovL2FtZXJsaW4ua2VhbnRleC5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMTcvMTIvcHJvZ3JhbW1hemlvbmUtYXN5bmMtYXdhaXQuanBnIiwidGl0bGUiOiJQcm9ncmFtbWF6aW9uZSBBc2luY3JvbmEgZSB2b2lkIiwic3VtbWFyeSI6IlV0aWxpenphbmRvIGxhIHByb2dyYW1tYXppb25lIGFzaW5jcm9uYSwgdmVuZ29ubyBzcGVzc28gY3JlYXRpIG1ldG9kaSBjaGUgcml0b3JuYW5vIGFzeW5jIHZvaWQuIEzigJl1dGlsaXp6byBkZWxsYSBwcm9ncmFtbWF6aW9uZSBhc2luY3JvbmEgZSB2b2lkLCDDqCBzY29uc2lnbGlhdG8gcGVyY2jDqCBpbXBsaWNhIGxhIGdlbmVyYXppb25lIGRpIGFsY3VuaSBwcm9ibGVtaSB0cmEgY3VpIGxhIGdlc3Rpb25lIGRlbGxlIGVjY2V6aW9uaSBlIGRlbGxvIHN0YXRvIGRlbCBUYXNrIGVzZWd1aXRvLiIsInRlbXBsYXRlIjoidXNlX2RlZmF1bHRfZnJvbV9zZXR0aW5ncyJ9″]

Read More

Programmazione asincrona con async e await

La programmazione asincrona è un MUST per lo sviluppo di applicazioni moderne. Nel framework sono sempre più le funzioni che sono state convertire nelle equivalenti asincrone. In questo articolo vengono descritte le basi della programmazione asincrona e perchè è bene utilizzarla. [visual-link-preview encoded=”eyJ0eXBlIjoiZXh0ZXJuYWwiLCJwb3N0IjowLCJwb3N0X2xhYmVsIjoiIiwidXJsIjoiaHR0cHM6Ly9hbWVybGluLmtlYW50ZXguY29tL3Byb2dyYW1tYXppb25lLWFzaW5jcm9uYS1hc3luYy1hd2FpdC8iLCJpbWFnZV9pZCI6LTEsImltYWdlX3VybCI6Imh0dHBzOi8vYW1lcmxpbi5rZWFudGV4LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAxNy8xMi9wcm9ncmFtbWF6aW9uZS1hc3luYy1hd2FpdC5qcGciLCJ0aXRsZSI6IlByb2dyYW1tYXppb25lIEFzaW5jcm9uYSBjb24gQXN5bmMgZSBBd2FpdCIsInN1bW1hcnkiOiJJbiBjIyDDqCBwb3NzaWJpbGUgdXRpbGl6emFyZSBsYSBQcm9ncmFtbWF6aW9uZSBBc2luY3JvbmEgY29uIEFzeW5jIGUgQXdhaXQsIGR1ZSBrZXl3b3JkIGNoZSBwZXJtZXR0b25vIGRpIHNjcml2ZXJlIGNvZGljZSBhc2luY3Jvbm8gY29tZSBzZSBmb3NzZSBzaW5jcm9uby4gTOKAmWludHJvZHV6aW9uZSBkZWxsYSBwcm9ncmFtbWF6aW9uZSBhc2luY3JvbmEgY29uc2VudGUgZGkgbWlnbGlvcmFyZSBsZSBwZXJmb3JtYW5jZSBkZWwgbm9zdHJvIGNvZGljZS4iLCJ0ZW1wbGF0ZSI6InVzZV9kZWZhdWx0X2Zyb21fc2V0dGluZ3MifQ==”]

Read More

Introduzione alle tuple

Le tuple sono presenti in C# già a partire dalla versione 4.0. Con il rilascio della versione 7.0 sono state introdotte alcune novità, descritte in questo articolo: [visual-link-preview encoded=”eyJ0eXBlIjoiZXh0ZXJuYWwiLCJwb3N0IjowLCJwb3N0X2xhYmVsIjoiIiwidXJsIjoiaHR0cHM6Ly9hbWVybGluLmtlYW50ZXguY29tL2Mtc2hhcnAtdHVwbGUvIiwiaW1hZ2VfaWQiOi0xLCJpbWFnZV91cmwiOiJodHRwczovL2FtZXJsaW4ua2VhbnRleC5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMTcvMTIvYy1zaGFycC5wbmciLCJ0aXRsZSI6IkMjIiwic3VtbWFyeSI6IkxlIHR1cGxlIHNvbm8gdW5hIGRlbGxlIG5vdml0w6AgaW50cm9kb3R0byBpbiBjIyA3LjAuIFNvbm8gdW4gcGFydGljb2xhcmUgdGlwbyBhIHZhbG9yZSwgcXVpbmRpIG5vbiBtZW1vcml6emFuZG8gZGF0aSBhbGzigJlpbnRlcm5vIGRlbGzigJloZWFwLCBzb25vIHBhcnRpY29sYXJtZW50ZSBpbmRpY2F0ZSBxdWFuZG8gZG9iYmlhbW8gcmVhbGl6emFyZSBjb2RpY2UgcGVyZm9ybWFudGUuIEMjIC0gdHVwbGUiLCJ0ZW1wbGF0ZSI6InVzZV9kZWZhdWx0X2Zyb21fc2V0dGluZ3MifQ==”]

Read More