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 MoreClassi 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 MoreProgrammazione 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 MoreProgrammazione 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 MoreProgrammazione 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 MoreIntroduzione 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