C# – Programme minimaliste

Ceci est un exemple simple de programme C# écrivant à la console. Vous pourrez comparer par vous-mêmes avec des programmes équivalents dans les langages que vous connaissez.

Cet exemple montre les éléments syntaxiques et structurels suivants :

  • La méthode de classe Main s'écrit avec un « M » majuscule, contrairement à ce qu'on connaît en C, C++ et Java. Le code à droite est un Top-Level Main, sorte de Main invisible et implicite (ça a de bons et de mauvais côtés)
  • L'instruction using devant un espace nommé, par exemple using System; permet d'omettre le préfixe décrivant l'espace nommé en question pour alléger l'écriture (par exemple, remplacer System.Console par Console). Ceci ressemble aux import de Java et aux using de C++
  • Les constantes s'expriment avec const, comme en C ou en C++ (Java utilise plutôt final)
  • Pour écrire un texte formaté à la console, le Framework de .NET utilise un format qui peut rappeler celui de C avec printf(). Dans Console.WriteLine("a {0} b", 3);, l'entier 3 sera inséré à la place de {0} dans le texte affiché. Conséquence : les erreurs de formatage ne sont pas détectées à la compilation
  • Les « primitifs » sont transformés en équivalents objets au besoin (technique qu'on nomme Boxing, et que Java utilise aussi depuis la version 5). Notez qu'un primitif C# est en fait un alias pour un struct, et que dans le monde .NET, les struct sont des « types valeurs » alors que les classes sont des « types références »
  • Ceci explique qu'on puisse invoquer une méthode de l'objet f (sa méthode GetType() retournera le nom du type dans le Framework, soit System.Single; le mot float en C# est un alias pour System.Single, et les deux noms peuvent être utilisés de manière interchangeable).
using System;

// Sans raccourcis
System.Console.WriteLine("J'aime mon prof");
// Avec raccourcis
Console.WriteLine("J'aime mon prof");
// Composition de valeurs
const int NOTE_OPTIMALE = 100,
          SEUIL_PASSAGE = 60;
Console.WriteLine("J'espère avoir un {0}% mais j'accepterais {1}%",
                  NOTE_OPTIMALE, SEUIL_PASSAGE);
// avec interpolation de texte
Console.WriteLine($"J'espère avoir un {NOTE_OPTIMALE}% mais j'accepterais {SEUIL_PASSAGE}%");
// les « primitifs » ont des méthodes
float f = 1.0f;
Console.WriteLine($"Le type de la variable f est {f.GetType()}");
// NOTE: le nom du type est celui du Framework, pas celui de C#

Valid XHTML 1.0 Transitional

CSS Valide !