我想知道是否可以使用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;
}
}
答案 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,清楚地显示您尝试过的内容,以及对代码执行操作的详细和具体说明,以及您希望它做什么。