-2
votes

Pourquoi une méthode d'annulation renvoie-t-elle la valeur.c # Langue

static void Main(string[] arts)

          Int X=5;

          Change number(ref X);
   
          Console.WriteLine(X);
   
          Console.ReadKey();


static void ChangeNumber(ref int y)

          y=0;

         // No return statement

This program works, it's output is 0. My question is :: Why does the method return a value(y), when it actually doesn't have a return statement, since it's even a void method.

3 commentaires

Pour une référence future, assurez-vous que le code que vous publiez ici réellement compile et fonctionne. Votre exemple de code actuel a de nombreuses erreurs de syntaxe afin que cela ne fonctionne même pas. Ces types d'erreurs rendent souvent difficiles à répondre aux questions.


Parce que vous avez utilisé Ref dans votre entrée qui manipule votre variable de référence!


Veuillez lire ce message sur la logique Réf docs.microsoft.com/en-us/dotnet/cshaarp/language-reference/.../a>


4 Réponses :


0
votes

La méthode Changenumber () fait pas retourne une valeur, comme vous dites. Pour renvoyer une valeur, nous devons utiliser le mot-clé renvoyer et attribuer la valeur renvoyée à une variable au point de l'appel de la fonction: xxx

à la place, votre exemple accepte. Un paramètre par référence et modifie la valeur de ce paramètre. Je vous suggère de lire sur la différence entre "Pass par référence" et "Pass par valeur".


0 commentaires

1
votes

La méthode ne "retourne" pas une valeur. Au lieu de cela, le paramètre est devenu modifié et à cause de l'utilisation du ref mot-clé qui change est reflété dans la variable d'origine:

Lorsqu'il est utilisé dans la liste des paramètres d'une méthode, le mot clé ref indique que Un argument est adopté par référence, pas par la valeur. Le mot clé ref rend le paramètre formel un alias pour l'argument, qui doit être un variable. En d'autres termes, toute opération sur le paramètre est faite sur l'argument. Par exemple, si l'appelant passe une variable locale expression ou une expression d'accès au tableau et l'appelé la méthode remplace l'objet auquel le paramètre REF se réfère, puis le la variable locale de l'appelant ou l'élément de tableau fait maintenant référence à la nouvelle objet lorsque la méthode revient.

Ceci est connu sous le nom de "transmission d'un argument par référence". Sans le mot-clé ref , seule la variable locale serait modifiée dans la méthode et la variable d'origine resterait inchangée.


0 commentaires

0
votes

Si vous posez des questions sur le message «The Programm étant sorti par le code de retour 0», veuillez lire ce Documentation sur les valeurs de retour de la méthode principale , le renvoi 0 0 est une valeur implicite:

Si la valeur de retour de MAIN n'est pas utilisée, le void de retour permet un code légèrement plus simple. Cependant, le retour d'un entier permet au programme de communiquer des informations sur l'état à d'autres programmes ou scripts qui invoquent le fichier exécutable. La valeur de retour de MAIN est traitée comme code de sortie pour le processus. Si le vide est renvoyé de Main, le code de sortie sera implicitement 0.


0 commentaires

0
votes

La méthode ne renvoie aucune valeur, sa mise à jour essentiellement du paramètre ref si vous le modifiez à l'intérieur de la méthode.

Je vous suggérerais de passer à travers cet article une fois.

https://docs.microsoft.com / FR-US / DOTNET / CSHARP / Langue-Référence / Mots-clés / Ref


0 commentaires