Aller au contenu principal

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
Version cible

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 !");
}
}
Top-level statements

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

CommandeRôle
dotnet new console -n NomProjetCréer un nouveau projet console
dotnet runCompiler et exécuter le projet
dotnet buildCompiler sans exécuter
dotnet new gitignoreCré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


Quelle commande crée un nouveau projet console C# nommé 'MonAppli' ?


Quelle commande compile ET exécute un projet C# ?


Quelle est la différence entre Console.WriteLine() et Console.Write() ?


Que signifie 'top-level statements' en C# ?


Quelle syntaxe permet d'insérer une variable dans une chaîne de caractères en C# ?


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.


Bonne pratique - Un projet = un dossier

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.


Bonne pratique - new string(char, n) pour les séparateurs

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.


Bonne pratique - Interpolation plutôt que concaténation

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.

📌 Une solution