Introduzione
Recentemente rilasciata, la nuova versione di C# 11 è stata definita da Microsoft “la versione della community“.
In effetti, molti sono stati i contributi forniti dalla comunità: suggerimenti, approfondimenti e segnalazioni di bug fino all’implementazione di intere funzionalità. Entriamo nel vivo e vediamo le principali novità!
In questo articolo
Valori letterali stringa UTF-8
Valori letterali stringa UTF-8
Per impostazione predefinita, le stringhe C# sono codificate in UTF-16, mentre la codifica delle stringhe su Internet è UTF-8. Per ridurre al minimo il sovraccarico di prestazioni nella conversione, ora è possibile semplicemente aggiungere un suffisso u8 alle tue stringhe letterali per ottenerle immediatamente in UTF-8.
var u8 = "This is a UTF-8 string!"u8
Valori letterali stringa non elaborati
I valori letterali stringa non elaborati sono un nuovo formato in C# 11. Questi valori possono contenere testo arbitrario, tra cui spazi vuoti, nuove righe, virgolette incorporate e altri caratteri speciali senza richiedere sequenze di escape. Un valore letterale stringa non elaborato inizia e termina con almeno tre caratteri di virgolette doppie (“””).
string longMessage = """
This is a long message.
It has several lines.
Some are indented
more than others.
Some should start at the first column.
Some have "quoted text" in them.
""";
Attributi generici
È possibile dichiarare una classe generica la cui classe base è System.Attribute. Questa funzionalità offre una sintassi più comoda per gli attributi che richiedono un parametro di System.Type.
public class GenericAttribute<T> : Attribute { }
[GenericAttribute<string>()]
public string Method() => default;
Da notare che è necessario specificare tutti i parametri di tipo quando si applica l’attributo. In altre parole, il tipo generico deve essere completamente costruito.
public class GenericType<T>
{
[GenericAttribute<T>()] // Not allowed! generic attributes must be fully constructed types.
public string Method() => default;
}
Conclusioni
Molte altre sono le novità di questa versione di C# 11 e per una più approfondita conoscenza vi rimando alla pagina ufficiale di Microsoft.