2016-03-31 1 views
-6

Je veux ma méthode Player.ToString() pour obtenir le nom avec le score et l'imprimer. Mais il ne veut pas imprimer le score total sur la personne.Comment implémenter ToString() pour mon objet Player?

class Player 
{ 
    public string Name { get; set; } 
    public List<Arrows> trow = new List<Arrows>(); 

    public Player(string name = "") 
    { 
     Name = name; 
    } 

    public override string ToString() 
    { 
     return Name; 
    } 
} 


class Arrows : Player 
{ 
    private int arrowOne; 
    private int arrowTwo; 
    private int arrowThree; 

    public Arrows(int arrowOne = 0, int arrowTwo = 0, int arrowThree = 0) 
    { 

     this.arrowOne = arrowOne; 
     this.arrowTwo = arrowTwo; 
     this.arrowThree = arrowThree; 
    } 

    public int GetScore() 
    { 
     return arrowOne + arrowTwo + arrowThree; 
    } 

    public override string ToString() 
    { 
     return string.Format("Din totala summa är {0}{1}", Name); 
    } 
} 
+0

Je suppose que c'est l'appel 'ToString' dans votre classe de flèches. Si c'est le cas, vous n'ajoutez qu'une valeur à la méthode 'string.Format' dans votre' ToString' –

+0

Veuillez réduire le code que vous publiez ici. Je suggère de créer une méthode principale qui crée un objet Player et renvoie player.ToString(). Est-ce que ça marche ou pas? –

+0

Darren: Oui, c'est vrai, désolé mauvaise explication si le problème était. Oui, c'est le score de flèche c'est le problème. et j'ai un test pour mettre les flèches. Comme ceci: return string.Format ("Din totala summa är {0} {1}", Nom, Flèches); Ensuite, je reçois une erreur type utilisé comme un veriable. Thomas: pouvez-vous me montrer comment vous impliquez? –

Répondre

0

Si je comprends bien la question, vous voulez simplement changer votre méthode ToString() pour ressembler à ceci:

public override string ToString() 
{ 
    return string.Format("Din totala summa är {0}{1}", Name, GetScore()); 
} 

Maintenant, cela étant dit, vous avez probablement un certain nombre d'autres problèmes. Il semble hautement improbable que la classe Arrows hérite de la classe Player. L'héritage implique une relation "est un". C'est à dire. votre code dit qu'un groupe de flèches est un lecteur. Je suppose que dans un jeu spécifique, cela peut être vrai, mais c'est un design très inhabituel et qui ne semble pas être celui que vous vouliez vraiment dire.

D'autre part, votre classe Player a déjà une liste d'objets Arrows (renforcement de mon soupçon que votre classe Arrows ne doit pas hériter Player & hellip; s'il est vrai que Arrowsest unPlayer, pourquoi Player ont une liste d'entre eux?). Malheureusement, il n'y a pas assez d'informations pour savoir ce que vous vouliez vraiment faire ici. Vous devriez peut-être simplement changer la méthode ToString() dans la classe Player à la place, par ex. quelque chose comme:

public override string ToString() 
{ 
    return string.Format("Din totala summa är {0}{1}", Name, trow.Count); 
} 

Ou peut-être quelque chose comme ceci:

public override string ToString() 
{ 
    return string.Format("Din totala summa är {0}{1}", Name, trow.Sum(a => a.GetScore())); 
} 

Mais je ne peux pas vraiment dire à coup sûr.