Premier programme
Notions théoriques
Qu'est-ce que C# ?
C# (prononcé "C sharp") est un langage de programmation créé par Microsoft en 2000. Il est :
- Orienté objet : tout est organisé en classes
- Fortement typé : le type de chaque variable est connu à la compilation
- Multiplateforme : grâce à .NET, les programmes C# s'exécutent sur Windows, Linux et macOS
- Très utilisé : développement web (ASP.NET Core), jeux vidéo (Unity), applications bureautiques et mobiles (.NET MAUI)
L'écosystème .NET
┌──────────────────────────────────────────┐
│ Votre programme C# │
├──────────────────────────────────────────┤
│ .NET SDK (compilateur + outils) │
├──────────────────────────────────────────┤
│ .NET Runtime (exécute le programme) │
├──────────────────────────────────────────┤
│ Windows / Linux │
└──────────────────────────────────────────┘
- SDK (Software Development Kit) : contient le compilateur et les outils pour créer des programmes
- Runtime : contient ce qui est nécessaire pour exécuter un programme déjà compilé
- dotnet CLI : l'outil en ligne de commande pour créer, compiler et lancer des projets
Ce cours utilise .NET 8 LTS (Long Term Support), la version stable recommandée pour les nouveaux projets.
Créer un premier projet
Sur Windows (PowerShell) et Linux (Bash) — même commande :
dotnet new console -n MonPremierProgramme
cd MonPremierProgramme
dotnet run
La commande dotnet new console crée un projet console avec deux fichiers essentiels :
MonPremierProgramme/
├── MonPremierProgramme.csproj ← configuration du projet
└── Program.cs ← code source
Structure d'un projet C# (.csproj)
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
</Project>
<TargetFramework>net8.0</TargetFramework>: version de .NET cible<Nullable>enable</Nullable>: active la vérification des références nulles<ImplicitUsings>enable</ImplicitUsings>: importe automatiquement les namespaces courants (System,System.IO, etc.)
Top-level statements (depuis .NET 6)
Depuis .NET 6, le code peut être écrit directement dans Program.cs sans déclarer de classe ni de méthode Main :
// Program.cs — syntaxe moderne (top-level statements)
Console.WriteLine("Bonjour le monde !");
La syntaxe classique reste valide mais n'est plus nécessaire :
// Ancienne syntaxe — toujours valide mais plus verbeuse
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Bonjour le monde !");
}
}
Les top-level statements sont la syntaxe recommandée pour les nouveaux projets .NET 6+. Le compilateur génère automatiquement la classe Program et la méthode Main en coulisses. Vous pouvez toujours accéder aux arguments via args sans les déclarer explicitement.
Afficher du texte
Console.WriteLine("Bonjour !"); // affiche avec retour à la ligne
Console.Write("Sans retour à la ligne"); // affiche sans retour à la ligne
Console.WriteLine(); // retour à la ligne seul
// Interpolation de chaîne avec $"..."
string prenom = "Alice";
int age = 20;
Console.WriteLine($"Je m'appelle {prenom} et j'ai {age} ans.");
Commentaires
// Commentaire sur une ligne
/* Commentaire
sur plusieurs lignes */
/// <summary>
/// Commentaire XML pour la documentation (méthodes et classes)
/// </summary>
Les commandes dotnet essentielles
| Commande | Rôle |
|---|---|
dotnet new console -n NomProjet | Créer un nouveau projet console |
dotnet run | Compiler et exécuter le projet |
dotnet build | Compiler sans exécuter |
dotnet new gitignore | Créer un .gitignore adapté à .NET |
Exemple pratique
// Program.cs
string titre = "=== Ma carte de visite ===";
string nom = "Alice Dupont";
string poste = "Développeuse C#";
string email = "alice@example.com";
int anneeDebut = 2022;
int experience = 2026 - anneeDebut;
Console.WriteLine(new string('=', titre.Length));
Console.WriteLine(titre);
Console.WriteLine(new string('=', titre.Length));
Console.WriteLine();
Console.WriteLine($" Nom : {nom}");
Console.WriteLine($" Poste : {poste}");
Console.WriteLine($" Email : {email}");
Console.WriteLine($" Exp. : {experience} an(s)");
Console.WriteLine();
Console.WriteLine(new string('=', titre.Length));
Test de mémorisation/compréhension
TP pour réfléchir et résoudre des problèmes
Vous allez créer un projet "CarteDeVisite" qui affiche vos informations dans un cadre formaté.
Étape 1 — Créer le projet
Créez un nouveau projet console nommé CarteDeVisite.
Chaque projet C# vit dans son propre dossier. Le nom du dossier correspond au nom du projet. Naviguez toujours dans le dossier du projet avant d'exécuter dotnet run.
Étape 2 — Afficher un titre encadré
Affichez un titre encadré avec des tirets.
new string('=', 30) est la façon idiomatique en C# de créer une ligne de N caractères identiques. C'est bien plus lisible qu'une boucle ou qu'une chaîne codée en dur.
Étape 3 — Afficher les informations avec interpolation
Affichez vos informations personnelles avec l'interpolation de chaîne.
Préférez $"Bonjour {prenom} !" à "Bonjour " + prenom + " !". L'interpolation est plus lisible, moins sujette aux erreurs d'espaces oubliés, et légèrement plus performante.