Avatar ·

Quelle est la différence entre les mots-clés ref et out en C# ?

Bonjour à tous ! J'ai commencé à apprendre C# et je suis tombé sur les mots-clés `ref` et `out`. Je comprends qu'ils permettent tous deux de modifier les variables passées à l'intérieur d'une méthode, mais la différence entre eux ne m'est pas tout à fait claire. Voici un exemple que j'ai écrit : ```csharp public void TestRef(ref int x) { x = x * 2; } public void TestOut(out int x) { x = 10; } static void Main() { int a = 5; int b; // Erreur : variable non initialisée pour out TestRef(ref a); Console.WriteLine(a); // Affiche 10 TestOut(out b); Console.WriteLine(b); // Affiche 10 } ``` J'ai remarqué qu'avec `out`, je ne peux pas passer une variable non initialisée sans erreur, mais dans la méthode je l'initialise. Avec `ref`, je suis obligé d'initialiser la variable avant l'appel. Mais ce n'est pas la seule différence, j'en suis sûr. Y a-t-il d'autres subtilités ? Par exemple, comment cela affecte-t-il les performances, ou y a-t-il des règles sur quand utiliser quoi ? Je serais reconnaissant pour une explication détaillée avec des exemples.