我需要增加Hashtable
中特定键的值,
这是我的代码(我想在函数期间创建Hashtable
,
我希望桌子像那样 - <string><int>
):
public void getMssg(string ipSend, string mssg, Hashtable table)
{
if (table.Contains(ipSend))
table[ipSend]++; //error
}
顺便说一下,我可以像上面写的一样定义Hashtable
吗?
答案 0 :(得分:0)
public void getMssg(string ipSend, string mssg, Hashtable table)
{
if (table.Contains(ipSend))
{
int value = (int)table[ipSend];
table[ipSend] = value + 1;
}
}
在我看来,字典方法会更好,因为它是类型安全的并且消除了转换。哈希表不适合这种用法。举个例子:
public void getMssg(string ipSend, string mssg, Dictionary<string,int> table)
{
if (table.ContainsKey(ipSend))
table[ipSend] += 1;
else
table.Add(ipSend, 1);
}
我按照@mjwills的建议更新了上面的代码:TryGetValue优于ContainsKey:
public void getMssg(string ipSend, string mssg, IDictionary<string, int> table)
{
int result;
if(!table.TryGetValue(ipSend, out result))
result = 0;
table[ipSend] = result + 1;
}
答案 1 :(得分:0)
改为使用Dictionary<string, int>
。
public void getMssg(string ipSend, IDictionary<string, int> table)
{
int result;
if(!table.TryGetValue(ipSend, out result))
result = 0; // do something if the key is not found
table[ipSend] = ++result;
}