C# 10 — Using e Namespace

La versione 6 del framework .NET è ora disponibile e con essa la decima versione del linguaggio C#. Insieme al nostro .Net Solution Developer e Sharepoint Solution Architect Massimiliano Macchia vedremo una panoramica delle novità introdotte attraverso una serie di articoli.

In questo articolo iniziamo la panoramica guardando agli using e ai namespace.

 

Premessa

Utilizzando Visual Studio 2022 e creando un nuovo progetto basato su .NET Core automaticamente viene suggerito il framework .NET 6, mantenendo tale selezione saranno utilizzabili le funzionalità e le caratteristiche di C# 10.
Al momento non è presente supporto a .NET 6 per versioni precedenti di Visual Studio per Windows.

Per verificare la versione correntemente installata di .NET (core) è possibile aprire un prompt dei comandi ed eseguire il comando “dotnet –version”; se non si verificano errori durante l’installazione di Visual Studio 2022 la nuova versione del framework sarà installata automaticamente.

 

Global using

C# 10 introduce la possibilità di utilizzare la parola chiave global nella definizione degli using.
Definendo uno using come global all’interno di un file rendiamo tale using automaticamente disponibile per l’intero progetto: il namespace importato risulterà quindi implicitamente disponibile e riconosciuto in tutti i file del progetto corrente.

using “misti”

Se all’interno dello stesso file includiamo sia using che global using, allora i global using dovranno necessariamente precedere all’interno del file tutti gli using.

Static using

La parola chiave global può essere combinata con gli altri modificatori esistenti per gli using. Utilizzandola, ad esempio, in combinazione con static verrà quindi creato uno using che è sia static sia global (condiviso da tutto il progetto).

In questo modo i metodi WriteLine Sqrt non solo potranno essere usati direttamente, senza dovergli anteporre rispettivamente Console Math, ma potranno essere usati direttamente in qualsiasi altro file del progetto.

 

Alias globali

Utilizzata in combinazione con global anche la definizione di un alias per gli using risulterà essere globalmente condivisa e quindi l’alias definito sarà riconosciuto all’interno di qualsiasi file presente nel progetto.

File dedicati agli using

Oltre a semplificare e ridurre sensibilmente il numero di using all’interno dei singoli file questa nuova caratteristica ci consente, se lo riteniamo utile, di rinunciare completamente a distribuire, o “disperdere”, i nostri using nei file, decidendo invece di predisporre un unico file all’interno del progetto, il cui scopo sarà soltanto quello di definire gli using (global using, ovviamente) di progetto.

Possiamo pensare, ad esempio, di avere un file globalusing.cs nella radice di un progetto e usarlo per centralizzare gli using.

 

File-scoped namespaces

A partire da C# 10 possiamo definire il namespace all’interno dei nostri file con una unica istruzione posta all’inizio del nostro file.
In ogni file è consentita una sola dichiarazione di file-scoped namespace.
Questa dichiarazione deve essere inserita prima di qualsiasi definizione di tipo. L’ideale sarebbe metterla subito dopo eventuali using, o come prima istruzione nel caso in cui non ci siano using.

Questa nuova sintassi permette di dimenticarci delle classiche parentesi graffe che in precedenza dovevano racchiudere il contenuto del namespace. Rimuovendo l’obbligo delle parentesi otteniamo la possibilità di:

  • semplificare il codice;
  • rimuovere un livello di indentazione superfluo;
  • forzarci a definire un solo namespace per ogni file.
 

Conclusione

Abbiamo visto alcune interessanti novità riguardanti le istruzioni using e la definizione dei namespace, non ci resta che sperimentare un po’ e prendere confidenza con tali novità.

Le modifiche introdotte con C# 10 però non finiscono qui, in un prossimo articolo tratteremo di altre nuove caratteristiche del linguaggio.

Riferimenti

Welcome to C# 10, .NET Blog
Using directive, Microsoft Documentation
Namespace, Microsoft Documentation

Condividi l'articolo

Categorie

Big Data & Data Analytics
ML & AI
Cloud Services
Web Mobile
Digital Workspace
Software Development
UX Design
Gamification
News
Eventi

Industries

Retail
Public Sector
Automotive
Mobile & Betting
Travel
Energy
Telco & Media
HealthCare
Financial Services
Homeland Security

Newsletter
Seguici su