L'utilisation des indicatifs de paramètre de sortie, c#
J'ai de très simple problème.
J'ai fait une fonction très simple pour vous montrer mon problème.
static void Main(string[] args)
{
double[,] mydouble = new double[1, 4];
mynewMatrix(out mydouble);
}
public static void mynewMatrix(out double[,] d)
{
for (int i = 0; i < 4; i++)
d[0, i] = i;
}
Erreur:
Utilisation des indicatifs de paramètre out 'newMAt' Le paramètre de sortie 'newMAt'
doit être attribué à l'avant contrôle des feuilles de la méthode actuelle
Je ne sais pas où est le problème.
- Le message d'erreur est très explicite. Veuillez décrire exactement ce que vous ne comprenez pas.
- Je ne vois pas de
newMAt
paramètre.
Vous devez vous connecter pour publier un commentaire.
Si le tableau est définie en DEHORS de la fonction, vous devez utiliser un
ref
(ou rien, en considérant le tableau est un type de référence).out
signifie que le paramètre est initialisé dans la fonction avant il retourne. Quelques exemples d'utilisation:Je vais ajouter que si vous ne savez pas quelle est la différence entre
ref
etout
vous avez pu lire Différence entre les ref et les paramètres de sortie dans .NETEn c# il y a deux mots clés similaires,
ref
etout
.À la fois de leur transmettre des valeurs par référence, mais la différence est là:
Lorsque vous utilisez
ref
le compilateur va vous obliger à céder votre variable avant l'appel de la méthode.Lors de l'utilisation de
out
il ne sera pas besoin de cela. Cela signifie que vous ne serez pas en mesure de supposer que le paramètre a déjà été rempli. Vous ne serez pas en mesure de lire sa valeur à l'intérieur de la méthode.Pour illustrer le problème, imaginez ce qui se passerait si quelqu'un d'autre a écrit ce code pour appeler votre méthode:
Clairement la variable ne sera jamais attribué, ce qui est mauvais.
Cela vous laisse avec trois options:
void mynewMatrix(ref double[,] d)
void mynewMatrix(out double[,] d)
void mynewMatrix(double[,] d)
La troisième option ne fonctionnera parce que jusqu'à présent vous n'avez pas de couture à la nécessité de réaffecter votre variable. Évidemment, cela peut changer votre code devient plus compliqué. Je suppose que vous n'avez vos raisons pour l'utilisation de
out
en premier lieu?Le message d'erreur est clair: vous devez attribuer une valeur à votre paramètre de sortie à l'intérieur de votre méthode:
La mission que vous faites en dehors de la méthode n'a aucun effet. Il suffit d'écrire ceci:
d
dans la méthode.De l'affectation des valeurs aux éléments de votre tableau de paramètre, mais vous devez attribuer une valeur y de la matrice elle-même en raison de ses définie comme
out
: