DEV Community

Cover image for Top-level statements
Marco Santoni
Marco Santoni

Posted on

Top-level statements

Voglio scrivere due righe di post per parlare di una funzionalità che è stata introdotta con .NET 5 e C# 9: i Top-level statements.
Iniziamo subito con la pratica e prendiamo come esempio il codice seguente, che non è altro che una semplice applicazione console che, quando viene eseguito, scrive a video una stringa.

using System;

namespace CsHelloWorld
{
    internal class Program
    {
        private void Main(string[] args)
        {
            Console.WriteLine(Hello world from C# world);
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

Il codice come abbiamo anche già detto è molto semplice ma, come si può vedere, sono necessarie ben cinque righe di codice (senza contare le parentesi) solamente per scrivere sullo schermo la frase Hello world from C# world.

Con l’arrivo di C# 9, grazie all’introduzione del Top-level statement, è possibile ridurre al minimo il codice necessario per creare la medesima applicazione.

using System;

Console.WriteLine(Hello world from C# world);
Enter fullscreen mode Exit fullscreen mode

Sono bastate due righe di codice per ottenere lo stesso risultato! Volendo, si potrebbe addirittura togliere lo using ed accorpare tutto in una sola riga di codice (ma penso che non ci fosse bisogno che ve lo dicessi 😁).

Per concludere

Personalmente trovo che questa possibilità di scrivere codice sia molto utile quando ci si trova a dover sviluppare utility e piccole applicazioni ma che, come insegna lo Zio Ben, da un grande potere derivano anche grandi responsabilità e, se non ci stiamo attenti, potrebbe portarci ad avere applicazioni ingestibili di n-mila righe di codice concentrate tutte in un solo file.

Inoltre, è interessante conoscere l’esistenza di questa nuova modalità in quanto in .NET 6 (che verrà rilasciato a breve) alcuni template sfrutteranno i Top-level statements di default.

E voi che cosa ne pensate di questa feature del linguaggio? Pensate di utilizzarla?

Discussion (0)