Méthodes avec paramètres out
"Quand une méthode veut te parler, laisse-la t’écrire dans ta variable." ✨
Qu’est-ce qu’un paramètre out ?
Le mot-clé out permet à une méthode de renvoyer plusieurs valeurs via ses paramètres.
Contrairement à un retour classique avec return, une méthode peut modifier une variable passée en out et ainsi renvoyer un résultat par référence.
💡 On parle souvent de “paramètre de sortie”.
Structure générale
static void NomMethode(out <Type> nomVariable)
{
// traitement
nomVariable = valeur; // obligatoire avant la fin
}
Utilisation :
<type> maVariable;
NomMethode(out maVariable);
Exemple simple
static void CalculerCarre(out int resultat, int nombre)
{
resultat = nombre * nombre;
}
Utilisation :
int carre;
CalculerCarre(out carre, 5);
Console.WriteLine($"Le carré est : {carre}"); // Le carré est : 25
🧠 Explication
- Le mot-clé
outindique que la méthode va assigner une valeur à la variable passée. - La variable doit être initialisée dans la méthode, même si elle ne l’était pas avant l’appel.
- On peut donc retourner plusieurs valeurs sans créer de tuple ni d’objet.
Exemple avec plusieurs out
static void CalculerOperations(int a, int b, out int somme, out int produit)
{
somme = a + b;
produit = a * b;
}
Utilisation :
int s, p;
CalculerOperations(3, 5, out s, out p);
Console.WriteLine($"Somme : {s}, Produit : {p}");
Somme : 8, Produit : 15
⚡ Simplification avec out var (C# 7+)
Depuis C# 7, on peut déclarer la variable directement dans l’appel :
CalculerOperations(3, 5, out int somme, out int produit);
Console.WriteLine($"Somme : {somme}, Produit : {produit}");
💡 Plus besoin de déclarer
int somme, produit;avant l’appel.
Le compilateur s’en charge automatiquement.
⚖️ Comparaison avec ref
| Caractéristique | out |
ref |
|---|---|---|
| Doit être initialisé avant l’appel | ❌ Non | ✅ Oui |
| Doit être assigné dans la méthode | ✅ Oui | ❌ Non obligatoire |
| Utilisation typique | Renvoyer plusieurs résultats | Modifier une valeur existante |
| Nécessite mot-clé à l’appel | ✅ Oui (out) |
✅ Oui (ref) |
🧩 Exemple concret : conversion sécurisée
L’exemple le plus courant est int.TryParse() :
if (int.TryParse("42", out int valeur))
{
Console.WriteLine($"Conversion réussie : {valeur}");
}
else
{
Console.WriteLine("Erreur de conversion");
}
📤 Résultat :
Conversion réussie : 42
🔍 Ici,
TryParserenvoie unboolindiquant si la conversion a réussi,
et assigne la valeur convertie dans la variablevaleurpassée enout.
⚠️ Erreurs fréquentes
- ❌ Oublier d’écrire
outà l’appel de la méthode - ❌ Ne pas assigner la variable
outdans la méthode (erreur de compilation) - ❌ Essayer d’utiliser la variable
outavant qu’elle ne soit assignée - ❌ Confondre
outetref: le premier crée la valeur, le second modifie une valeur existante
💬 Exemple complet
static bool TrouverMax(int a, int b, out int max)
{
if (a > b)
{
max = a;
return true;
}
else if (b > a)
{
max = b;
return true;
}
else
{
max = a;
return false;
}
}
static void Main()
{
if (TrouverMax(10, 5, out int resultat))
Console.WriteLine($"Le plus grand est {resultat}");
else
Console.WriteLine("Les deux nombres sont égaux");
}
📤 Résultat :
Le plus grand est 10
🧩 Quiz – Le mot-clé out
Testez vos connaissances ! 📝 Clique sur chaque question pour découvrir la réponse.
1️⃣ Que fait le mot-clé
out ?
B. Passe un paramètre par référence pour le modifier
C. Passe un paramètre en lecture seule
D. Crée une copie temporaire
E. Supprime le typage
✅ Afficher la réponse
out permet à une méthode de modifier la variable passée par référence.
2️⃣ Quelle différence entre
out et ref ?out ne nécessite pas d’initialisation avant l’appel
B. ref oblige à initialiser avant
C. out doit être assigné dans la méthode
D. Toutes les réponses ci-dessus
✅ Afficher la réponse
3️⃣ Quelle est la bonne syntaxe ?
Calculer(out int x, 5);
B. Calculer(int out x, 5);
C. Calculer(ref int x, 5);
D. Calculer(5, x out);
✅ Afficher la réponse
out se place avant le nom de la variable dans l’appel.
4️⃣ Peut-on combiner
return et out ?
B. Oui, pour renvoyer un booléen et un résultat complémentaire
C. Oui, mais seulement avec ref
D. Non, car out remplace return
✅ Afficher la réponse
return et out ensemble (ex : TryParse()).
5️⃣ Depuis quelle version de C# peut-on écrire
out var directement dans l’appel ?
B. C# 6
C. C# 7
D. C# 8
E. C# 9
✅ Afficher la réponse
out var est possible depuis C# 7.
Navigation
Introduction Sans paramètre Avec paramètre Avec retour Par référence / Out Retour multiple (out) Retour multiple (tuples) Travail pratique
Pour aller plus loin
-
out– référence C# (Microsoft Learn) Référence officielle du mot-cléout, avec exemples et variantes (C# 7+ déclaration inline). -
Paramètres et modificateurs de méthode (Microsoft Learn) Panorama des modificateurs (
out,ref,in) et règles d’utilisation. -
int.TryParse– API .NET (FR)
MéthodeTryParsetypique qui illustre l’usage d’un paramètreout.
-
TutorialsTeacher – Out keyword in C# Introduction claire à
outavec exemples simples. -
TutorialsTeacher – Ref keyword in C# Pour comparer
outetrefrapidement. -
GeeksforGeeks – Out Parameter With Examples Série d’exemples concrets et rappels sur C# 7+ (
out var).