Méthodes avec paramètres par référence (ref et out)
"Modifier une variable sans la retourner ? En C#, on appelle ça par référence." ✨
Pourquoi passer par référence ?
En C#, les paramètres sont passés par défaut par valeur : cela signifie que la méthode reçoit une copie de la variable.
➡️ Si on modifie cette copie, l’original ne change pas.
Mais parfois, on veut qu’une méthode puisse modifier directement la valeur d’une variable définie dans le Main.
C’est là qu’interviennent ref et out.
🔁 Le mot-clé ref
- Le paramètre doit être initialisé avant l’appel.
- La méthode peut lire ET modifier la variable.
Exemple
void Doubler(ref int x)
{
x *= 2;
}
int valeur = 5;
Doubler(ref valeur);
Console.WriteLine(valeur); // Affiche : 10
➡️ x est modifié directement dans la méthode, et la modification est répercutée à l’extérieur.
➕ Le mot-clé out
- La variable peut être non initialisée avant l’appel.
- Elle doit obligatoirement être affectée dans la méthode.
Exemple
void CalculerSomme(int a, int b, out int resultat)
{
resultat = a + b;
}
int r;
CalculerSomme(3, 4, out r);
Console.WriteLine(r); // Affiche : 7
➡️ out est souvent utilisé pour renvoyer plusieurs résultats.
⚠️ Erreurs fréquentes
- ❌ Oublier
refououtà l’appel de la méthode → erreur de compilation - ❌ Ne pas affecter la variable
outdans la méthode → erreur de compilation - ❌ Utiliser
refsans avoir initialisé la variable au préalable
Quiz
Testez vos connaissances ! 🧠
1️⃣ Quel est l'effet du mot-clé
ref ?
B. Passer la variable par copie
C. Permettre à la méthode de modifier la variable d'origine
D. Empêcher l’utilisation de la variable dans
MainE. Affecter obligatoirement une valeur
✅ Afficher la réponse
ref, la méthode peut modifier directement la variable d'origine.
2️⃣ Que se passe-t-il si une variable
out n’est pas affectée dans la méthode ?
B. Le programme compile mais plante
C. Erreur à l'exécution
D. Erreur à la compilation
E. Rien ne se passe
✅ Afficher la réponse
out soit affectée.
3️⃣ Quelle est la différence principale entre
ref et out ?
ref permet de modifier, out permet de lireB.
ref exige une variable initialisée, out nonC.
out est plus rapideD. Aucune différence
E.
out fonctionne sans déclaration
✅ Afficher la réponse
ref demande une variable initialisée, contrairement à out.
4️⃣ Pourquoi utiliser
out au lieu d’un return ?
B. Pour modifier plusieurs variables à la fois
C. Pour améliorer les performances
D. Pour éviter les erreurs
E. Pour faire des boucles
✅ Afficher la réponse
out permet de renvoyer plusieurs résultats depuis une même méthode.
5️⃣ Quel code est correct ?
void Test(out int x) { } Console.WriteLine(x);B.
void T(ref int x) { x++; } T(5);C.
void T(out int x) { x = 3; } int a; T(out a);D.
void X(int x) { ref x = 0; }E.
void T(ref x) { x = 2; }
✅ Afficher la réponse
out.
Navigation
Introduction Sans paramètre Avec paramètre Avec retour Par référence / Out Retour multiple (out) Retour multiple (tuples) Travail pratique