【发布时间】:2011-12-01 11:54:51
【问题描述】:
我是一个家庭作业,我必须实现一些方法。我可以使用上传方法,我必须在元素中上传字典。如果键已经在字典中,我必须更新值。如果键不在字典中,我必须添加该元素。在 Foreach 我可以做到这一点。
在 if 情况下永远不会为真的方法中,只执行 else 情况。 (以其他方式,我尝试if(alcDictionary.Keys==alc) - 但不起作用)。我不知道为什么。有人可以解释我的问题在哪里?为什么从不执行 If 案例。 (总是写“不找到”,而不是“找到”)
我已经用 containsKey() 编写了这个方法:
public void Upload(Alcohol alc, int dl)
{
int d = 0;
Alcohol s = null;
if (alcDictionary.ContainsKey(alc))
{
Console.WriteLine("I find");
d = alcDictionary[alc];
alcDictionary[alc] = d + dl;
}
else
{
Console.WriteLine("dont find");
alcDictionary.Add(alc, dl);
}
使用 Foreach(效果很好!)
int d = 0;
Alcohol s = null;
foreach (var item in alcDictionary)
{
if (item.Key.Equals(alc))
{
d = item.Value;
s = item.Key;
}
}
if (s != null)
{
alcDictionary[s] = d + dl;
}
else
{
alcDictionary.Add(alc, dl);
}
其他一些代码:
public Kocsma()
{
Upload(new Alcohol("Borsodi alc", 160, 4.6), 1000);
Upload(new Alcohol("Pilsner Urquell", 250, 4.4), 800);
Upload(new Alcohol("Soproni Ászok", 150, 4.5), 900);
Upload(new Alcohol("Dreher Classic", 200, 5.2), 600);
}
static void Main(String[] args)
{
Alcohol b = new Alcohol("Borsodi alc", 160, 4.6); //34
Alcohol c = new Alcohol("Bratista alc", 230, 4.5); // 51
Alcohol d = new Alcohol("Soproni Ászok", 150, 4.5); // 33,3
Kocsma pub = new Kocsma();
pub.Upload(c, 300);
pub.Upload(d, 450);
pub.Upload(b, 100);
}
【问题讨论】:
标签: c# dictionary