动态地从属性添加值
本文关键字:添加 从属性 动态 | 更新日期: 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
—所以我把它省略了。
如果这没有解决你的问题,请编辑你的问题,以便更清楚地了解你想要做什么。提供一个良好的最小化、完整和可验证的代码示例,以清楚地显示您所尝试的内容,并详细而具体地解释代码的功能,以及您希望它代替什么。