gpt4 book ai didi

c# - 如何将字典中的所有负值设置为零?

转载 作者:行者123 更新时间:2023-11-30 19:27:06 29 4
gpt4 key购买 nike

我正在开发一个小的 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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com