J'ai une méthode qui devrait renvoyer 2 variables de la méthode de classe à l'essentiel, mais j'utilise clairement mon tuple erroné comme si je vérifie ce que la méthode renvoie, il est incorrect.
using System; namespace App1 { public class Player { public int Health = 100; public int Mana = 100; static Tuple<int, int> SetAttributes(int pHealth, int pMana) { pHealth++; pMana++; Console.WriteLine("Health: " + pHealth + " Mana: " + pMana); return new Tuple<int, int>(pHealth, pMana); }//method end static void Main(string[] args) { Player myPlayer = new Player(); SetAttributes(myPlayer.Health, myPlayer.Mana); Console.WriteLine("In Main ...Health: " + myPlayer.Health + " Mana: " + myPlayer.Mana); } } //class End }//Namespace end
5 Réponses :
setattributes code> ne prend pas ses arguments par référence et vous ignorez la valeur de retour dans votre méthode principale. Donc, vous écartez immédiatement la valeur incrémentée. P>
setattributes renvoie le tuple, de sorte que vous ne disposez que les valeurs mises à jour.
static void Main(string[] args) { Player myPlayer = new Player(); Tuple<int, int> newValues = SetAttributes(myPlayer.Health, myPlayer.Mana); myPlayer.Health = newValues.Item1; myPlayer.Mana = newValues.Item2; Console.WriteLine("In Main ...Health: " + myPlayer.Health + " Mana: " + myPlayer.Mana); }
Merci, cela fonctionne bien et je vois ce que je devais faire.
Dans votre méthode code> principale >, vous ne lisez pas le tuple à partir de voici une méthode MAIN / code> MAIN / code> Mise à jour, car Vous devez lire les valeurs de tuple p> ICI est MSDN Docs pour TUPLE. p> p> setattributes () code>
veux juste ajouter, Au lieu d'utiliser l'élément1 et l'élément2 ou d'autres éléments, vous pouvez utiliser des noms spécifiques dans la méthode principale.
(int health, int mana) = SetAttributes(myPlayer.Health, myPlayer.Mana); // Use health and mana like you normally would.
Cette ligne ne fonctionne pas, car la santé et le mana sont de type de valeur.
Tuple<int, int> ret = SetAttributes(myPlayer.Health, myPlayer.Mana); myPlayer.Health = ret.Item1; myPlayer.Mana = ret.Item2;