当我尝试为现有密钥的字典(对象类型)添加值时,我收到以下错误,
预期结果:我希望字典同时具有值" 10"和"你好"对于密钥" A"
List<string> lst = new List<string>();
lst.Add("A");
lst.Add("A");
var X = new Dictionary<string, object>();
foreach (var a in lst)
{
if (X.Keys.Contains(a))
{
X[a].Add(10);
//X[a] = 10;
}
else
{
X.Add(a, "hello");
}
}
&#39;对象&#39;不包含&#39;添加&#39;的定义没有延伸 方法&#39;添加&#39;接受类型&#39;对象&#39;的第一个参数。可能 发现(您是否缺少using指令或程序集引用?
有什么可以解决这个问题?
答案 0 :(得分:2)
您必须更改Dictionary
的类型,因为您需要一个值列表。
看起来像这样
var X = new Dictionary<string, List<object>>();
foreach (var a in lst)
{
if (!X.Keys.Contains(a))
{
X[a].Add(10);
}
else
{
X.Add(a, new List<object>());
X[a].Add("hello");
}
}
答案 1 :(得分:2)
也许您希望X
成为其值为列出对象的字典?然后:
List<string> lst = new List<string>();
lst.Add("A");
lst.Add("A");
var X = new Dictionary<string, List<object>>(); // note this type
foreach (var a in lst)
{
List<object> li;
if (X.TryGetValue(a, out li))
{
li.Add(10);
}
else
{
X.Add(a, new List<object>(1) { "hello", });
}
}
替代:
foreach (var a in lst)
{
List<object> li;
var oldKey = X.TryGetValue(a, out li);
if (!oldKey)
{
li = new List<object>(1);
X.Add(a, li);
}
li.Add(oldKey ? (object)10 : "hello");
}
答案 2 :(得分:0)
如下所示分配
var X = new Dictionary<string, object>();
if (X.Keys.Contains("A"))
{
X["A"] ="10";
}
else
{
X.Add("A", "hello");
}