Aller au contenu principal
Publié le

ref et out en C#

Partager :

Introduction

En programmation, nous rencontrons fréquemment des situations où nous avons besoin qu'une méthode retourne plus d'une valeur ou modifie directement les arguments fournis. En C#, ref et out sont deux modificateurs essentiels qui offrent cette capacité. Cependant, chacun a ses particularités qui méritent attention.

Passage par Valeur vs. Passage par Référence

Avant d'approfondir ref et out, il est crucial de comprendre la différence entre passage par valeur et passage par référence.

  • Passage par Valeur: Une copie de la valeur est transmise à la méthode. Les modifications apportées à cette valeur n'affectent pas l'original.
  • Passage par Référence: Une référence à la variable originale est transmise. Les modifications affectent directement la valeur originale.

Découvrir ref

Le modificateur ref indique qu'un argument est passé par référence et non par valeur.

Caractéristiques de ref :

  • La variable doit être initialisée avant d'être passée.
  • Les modifications effectuées dans la méthode se répercutent en dehors de celle-ci.

Explorer out

Le modificateur out est similaire à ref en ce qu'il passe les arguments par référence.

Caractéristiques de out :

  • La variable n'a pas besoin d'être initialisée avant d'être passée.
  • La variable doit être initialisée dans la méthode avant que celle-ci ne retourne.
using System;

namespace Base {
  class RefEtOut {
    public void Run() {
      int nombre1 = 0, nombre2;

      Ref(ref nombre1);
      Out(out nombre2);

      Console.WriteLine($"Valeur après la méthode Ref : {nombre1}");   // 2
      Console.WriteLine($"Valeur après la méthode Out : {nombre2}");   // 3
    }

    void Ref(ref int num) {
      num = 2;
    }

    void Out(out int num) {
      num = 3;
    }
  }
}

Quand utiliser ref ou out ?

ref et out ont tous deux leurs applications :

  • Utilisez ref lorsque vous vous attendez à ce que l'argument ait déjà été initialisé et que la méthode modifie cette valeur.
  • Utilisez out lorsque vous souhaitez que la méthode soit responsable de l'initialisation ou de la définition de la valeur.

Conclusion

ref et out sont tous deux des outils précieux en C# qui offrent une plus grande flexibilité dans la manipulation des données entre les méthodes. En comprenant leurs caractéristiques et leurs différences, vous serez mieux équipé pour utiliser ces modificateurs de manière efficace dans vos projets.

Happy coding!