动态地从属性添加值

本文关键字:添加 从属性 动态 | 更新日期: 2023-09-27 18:07:53

我想知道我是否可以使用重写方法动态添加属性中设置的值。我想从属性中添加值(分数),以便最终得到总分。

这里是我的代码

public abstract class player
    {
        public string nickName { get; set; }

        public virtual int computeScore()
        {
            throw new NotImplementedException();
        }
    }
public  class Bes : player
    {
        public int initScore =0;
        public int score { get; set; }
        public int ttlScore { get; set; }

        public override int computeScore()
        {
            return this.ttlScore += this.score;
        }
    }

动态地从属性添加值

我怀疑你想做的是不是一个好主意。但事实是,你想做什么并不是很清楚。

我有一个模糊的感觉,你想要,每次设置score属性,将值添加到ttlScore属性。如果是这样,那么当然……你可以这么做,但这是个糟糕的主意。使用属性来表示该操作将非常令人困惑;相反,你应该有一个方法,例如命名为AddScore(),所以很明显阅读代码,每次得分被传递给方法,它将被添加到运行总数。

例如:

public  class Bes : player
{
    public int MostRecentScore { get; private set; }
    public int TotalScore { get; private set; }
    public int AddScore(int score)
    {
        this.MostRecentScore = score;
        return this.TotalScore += score;
    }
}

那么MostRecentScore属性将仍然显示任何最近的分数,而TotalScore属性将显示运行总数,但类成员明确表示,你必须调用AddScore()报告一个新的分数,这将负责更新两个感兴趣的属性。

这个示例当然没有使用代码示例的virtual方面。从你的问题中不清楚为什么computescore()方法实际上是虚拟的,它可能不需要—如果你真的想让基类知道得分,那么与得分相关的属性也属于基类,并且成员都不需要是virtual —所以我把它省略了。

如果这没有解决你的问题,请编辑你的问题,以便更清楚地了解你想要做什么。提供一个良好的最小化、完整和可验证的代码示例,以清楚地显示您所尝试的内容,并详细而具体地解释代码的功能,以及您希望它代替什么。