如何为Player对象实现ToString()?

时间:2016-03-31 14:54:21

标签: c# tostring

我希望我的Player.ToString()方法获得带有分数的名称 并打印出来。但它不想打印出该人的总得分。

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);
    }
}

1 个答案:

答案 0 :(得分:0)

如果我正确理解了这个问题,您只需将ToString()方法更改为如下所示:

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

现在,那说,你可能还有其他一些问题。 Arrows类似乎不太可能继承Player类。继承意味着&#34;是一个&#34;关系。即你的代码说一组箭头玩家。我想在一些特定的游戏中可能是真的,但它是一个非常不寻常的设计,并不像你真正想要的那样。

另一方面,您的Player课程已有Arrows个对象列表(这加强了我怀疑您的Arrows课程不应该继承Player ...如果Arrows 确实是 Player,为什么Player会列出它们?)。

不幸的是,没有足够的信息来了解你真正打算做什么。您可能只需更改ToString()类中的Player方法,例如类似的东西:

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

也许是这样的:

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

但我无法肯定地说。