C# 9 – Programme ‘Top-Level’

Présentation d’une nouvelle feature qui sera probablement intégré dans la future version de C#.

Rappel

Lorsque de l’on écrit des programmes avec un donc un point d’entrée principale il existe à l’heure actuelle différentes méthodes que l’on peut intégrer.

  • Classique statique ;
  • Asynchrone
  • Passage de paramètres
  • Intégrer des fonctions locales
  • Instanciation d’une classe pour pouvoir effectuer des appels

But

On aimerait pouvoir avoir plus de flexibilité dans l’écriture de cette partie de code. L’objectif est de pouvoir mettre un ensemble d’instructions avant la déclaration : static class Program.

Ce faisant, si du code est présent en début de source alors cette section sera omise. Cela permettra dans certains programme de simplifier et clarifier le code, cela peut aussi servir dans le cadre d’apprentissage.

Ecriture classique

Voici un ensemble de code C# d’un projet console dans une écriture classique :

using System;

namespace CSharpTopLevelProgramDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            var name = args[0];

            Console.WriteLine($"Welcome aboard C# 9, {name}.");

            Console.ReadLine();
        }
    }
}
using System;

namespace CSharpTopLevelProgramDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            var name = args[0];

            Console.WriteLine($"Welcome aboard C# 9, {name}.");

            MyLocalFunction();

            Console.ReadLine();

            void MyLocalFunction()
            {
                Console.WriteLine("This is my local function");
            }
        }
    }
}

Ecriture Top-Level

Voici les mêmes exemples mais avec l’écriture “Top-Level” de C# 9. C’est quand même vraiement plus claire et plus simple.

using System;

var name = args[0];

Console.WriteLine($"Welcome aboard C# 9, {name}.");

Console.ReadLine();
using System;

var name = args[0];

Console.WriteLine($"Welcome aboard C# 9, {name}.");

MyLocalFunction();

Console.ReadLine();

void MyLocalFunction()
{
    Console.WriteLine("This is my local function");
}

Rien de vous empêche à l’heure actuelle de faire des déclarations de classes dans le code même Top-Level comme suit :

using System;

var name = args[0];

Console.WriteLine($"Welcome aboard C# 9, {name}.");

MyClass a = new MyClass();
Console.WriteLine(a.Message());

Console.ReadLine();


public class MyClass
{
    public int MyProperty { get; set; }

    public string Message()
    {
        return "FooBar";
    }
}

Et cela fonctionne impeccablement bien.

toplevelresult

A lire aussi…

Frédéric Schmidt

Lead Technical Architect.

Ajouer un commentaire

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Recent Comments

    %d blogueurs aiment cette page :