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;