添加到词典<;字符串,字符串>;使用foreach
本文关键字:字符串 gt foreach 使用 lt 添加 | 更新日期: 2023-09-27 18:25:54
在以下情况下,确保optionValue始终唯一的最佳方法是什么?
public Dictionary<string, string> Dict = new Dictionary<string, string>();
foreach (string optionKey in i.options.Keys)
{
string optionValue = i.options.Values.ToString();
Dict.Add(optionKey, optionValue);
}
编辑:i.options包含一个键和一个值对。我需要确保每个键的相应值都添加到字典中
EDIT2:更正Dict.Add(optionKey,optionValue)的顺序
只测试一下:
if(!Dict.ContainsKey(optionValue))
Dict.Add(optionValue, optionKey)
根据您的变量名,看起来您的键和值颠倒了,但如果optionKey
是您的查找键,它应该是:
Dict.Add(optionKey, optionValue);
粗略浏览MSDN文档可以发现,您可以使用显而易见的方法ContainsKey(string)
来检查字典是否包含某个键。
在字典中,所有键都是唯一的。如果您想在向字典中添加条目时防止出现异常,请使用
if (!Dict.ContainsKey(optionKey)) {
Dict.Add(optionKey, optionValue);
} else {
Debug.Print("Key '"+optionKey+"' already exists");
}
取决于您希望如何处理重复项。
例如"最后一个获胜"
foreach(...)
{
// Will overwrite an existing key
Dict[optionValue] = optionKey;
}
"第一个获胜":
foreach(...)
{
if (!Dict.ContainsKey(optionValue)) Dict.Add(optionValue, optionKey);
}
public Dictionary<string, string> Dict = new Dictionary<string, string>();
foreach (string optionKey in i.options.Keys)
{
string optionValue = i.options.Values.ToString();
if(!Dict.ContainsValue(optionValue))
Dict.Add(optionValue, optionKey);
}
请参阅http://msdn.microsoft.com/en-us/library/kw5aaea4(v=vs.100).aspx
如果您只是担心异常,那么只需使用item属性:
Dict[optionValue]=optionKey;
MSDN:如果找不到指定的键,则get操作将抛出KeyNotFoundException,而set操作将使用指定的键创建一个新元素。
或者,如果你真的想检查,可以使用ContainsKey方法检查
http://msdn.microsoft.com/en-us/library/xfhwa508.aspx
其他人一直建议您只需测试密钥是否存在,如果存在则跳过添加。但是,这可能会导致数据丢失。您应该创建一个自定义类或类型,并将其与字典一起使用,如下所示:
公共词典<Guid,CustomObjectOrType>Dict=new词典<Guid,CustomObjectOrType>();
通过这种方式,您可以确保每个键都是唯一的(Guid),同时保留所有选项值和选项键。