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#
|