Paramètres Out
En plus de passer des valeurs par référence, vous pouvez également spécifier qu'un paramètre donné est un paramètre sur en utilisant le mot-clef, qui est utilisé de la même manière que le mot-clé ref (en tant que modificateur au paramètre dans la définition de fonction et dans l'appel de fonction). En effet, cela vous donne presque exactement le même comportement qu'un paramètre de référence en ce que la valeur du paramètre à la fin de l'exécution de la fonction est renvoyée à la variable utilisée dans l'appel de fonction. Cependant, il existe d'importantes différences:
- considérant qu'il est illégal d'utiliser une variable non affectée comme paramètre de référence, vous pouvez utiliser une variable non affectée comme paramètre sur
- Un paramètre out doit être traité comme un valeur non affectée par la fonction qui l'utilise.
Cela signifie que pendant qu'il est permis d'appeler le code à utiliser une variable affectée en tant que paramètre de sortie, la valeur stockée dans cette variable est perdue lorsque la fonction est exécutée. Par exemple, considérons une extension de la fonction MaxValue() présentée plus haut, qui renvoie la valeur maximale d'un tableau. Modifiez légèrement la fonction afin d'obtenir l'indice de l'élément avec la valeur maximale dans le tableau. Pour garder les choses simples, obtenez seulement l'indice de la première occurrence de cette valeur lorsqu'il y a plusieurs éléments avec la valeur maximale.Pour ce faire, vous ajoutez un paramètre en modifiant la fonction comme suit:
static int MaxValue(int[] intArray, out int maxIndex)
{int maxVal = intArray [0]; maxIndex = 0; for (int i = 1; i < intArray.Length; i ++) { if (intArray [i]> maxVal) { maxVal = intArray [i]; maxIndex = i; } } return maxVal; }
Vous pouvez utiliser cette fonction comme indiqué ici:
int[] myArray = {1, 8, 3, 6, 2, 5, 9, 3, 0, 2};
int maxindex; Console.WriteLine ("La valeur maximale dans myArray est {0}", MaxValue (myArray, out maxIndex)); Console.WriteLine ("La première occurrence de cette valeur est à l'élément {0}", maxIndex + 1);
Il en résulte dans ce qui suit:
La valeur maximale dans MonTableau est 9
La première apparition de cette valeur est à l'élément 7
One ont été ajoutées à la La valeur de maxIndex est renvoyée ici lorsqu'elle est affichée à l'écran. Ceci est à traduire l'indice en une forme plus facile à lire, de sorte que le premier élément du tableau est désignée comme élément 1, au lieu de l'élément 0.
De plus, un paramètre out doit être initialisé par la fonction qui le requiert, sinon vous obtenez des erreurs de compilation, ce qui est une bonne chose. –
L'appelant doit déclarer la variable, mais n'a pas besoin de l'initialiser. – TrueWill