从属性动态添加值

时间:2016-09-20 19:18:15

标签: c# override abstract

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

这里是我的代码

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

1 个答案:

答案 0 :(得分:0)

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

我有一种模糊的感觉,每次设置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属性将显示运行总计,但班级成员明确表示您必须致电{{1}报告一个新的分数,这将负责更新两个感兴趣的属性。

此示例当然不使用代码示例的AddScore()方面。从你的问题中不清楚为什么virtual方法实际上是虚拟的,并且它可能不需要 - 如果你真的希望基类知道得分,那么与分数相关的属性也属于那里,并且所有成员都不需要computescore() - 因此我将其排除在外。

如果这不能解决您的问题,请edit your question,以便更清楚您尝试做什么。提供一个好的Minimal, Complete, and Verifiable code example,清楚地显示您尝试过的内容,以及对代码执行操作的详细和具体说明,以及您希望它做什么。