我正在开发一个小的 C# 浏览器游戏,我使用这个字典来跟踪游戏中的多个资源:
public Dictionary <String, int> resource = new Dictionary<string,int>();
其中包括“黄金”,它会随着每次价格变动而变化。
protected void timerMinute_Tick(object sender, EventArgs e)
{
resource["gold"] += (resProduction["gold"] - resConsumption["gold"])
}
现在,如果消费大于生产,数量就会减少。我想拒绝资源变为负数。我知道我可以为每个刻度执行此操作:
if (resource["gold"] < 0)
{
resource["gold"] = 0;
}
但是,我还有很多资源需要跟踪,所以虽然我可以为每个资源编写上述代码,但我只是想知道是否有人有聪明的方法来检查字典中的所有值资源,并将任何负数变为零。
编辑:感谢您对此处问题提出的所有重要建议!作为c#的新手,我对它不是很熟悉^^
最佳答案
您可以创建自己的字典类来确保值是非负的。这是一个简单的示例,但您可以很容易地使其通用且可扩展。
public class ValidatedDictionary : IDictionary<string, int>
{
private Dictionary<string, int> _dict = new Dictionary<string, int>();
protected virtual int Validate(int value)
{
return Math.Max(0, value);
}
public void Add(string key, int value)
{
_dict.Add(key, Validate(value));
}
public bool ContainsKey(string key)
{
return _dict.ContainsKey(key);
}
// and so on: anywhere that you take in a value, pass it through Validate
关于c# - 如何将字典中的所有负值设置为零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19597997/