Dictionary<string, object> myVal = new Dictionary<string, object>();
myVal.Add("key1", "value1");
myVal.Add("key2", "value2");
foreach (var val in myVal)
{
if (val.Key == "key1")
{
string mystr = val.Value;
Console.Write(val.Value);
Console.ReadLine();
}
}
我收到此错误:
无法隐式转换类型&#39;对象&#39;到&#39;字符串&#39;。一个明确的 存在转换(你错过了演员吗?)
答案 0 :(得分:3)
两种选择:
使用Dictionary<string, string>
或
将您从object
中获得的Dictionary<string, object>
个实例投射到string
string mystr = (string)(val.Value);
答案 1 :(得分:3)
为什么会出现这样的错误:
使用Dictionary<string, object>
使用foreach (var val in myVal)
迭代集合(val
)时KeyValuePair<string, object>
将是val.Key
,其中val.Value
表示密钥,object
表示与键对应的值。
在您的情况下,该值的类型为<string, object>
,因为您的集合属于string mystr = val.Value;
类型。通过使用string mystr = (string)(val.Value);
,您将对象分配给字符串变量。根据规则,不允许这项任务。
<强>解决方案:强>
将对象强制转换为如下字符串:
myVal.Add("key2", "value2");
填充Dictionary
的语句Dictionary<string, string> myVal = new Dictionary<string, string>();
表示键和值都是字符串类型,因此您可以将字典重新定义为
@RouteConfig([
{path: '/login', name: 'Login', component: LoginComponent, useAsDefault: true},
{path: '/register', name: 'Register', component: RegisterComponent}
])
答案 2 :(得分:0)
我的不好,我发现有嵌套的词典,其中另一个List操作导致了这个问题。我刚刚添加了一些foreach循环以进入最后的字典并深入到List中,它完美地工作。
我的最后一篇文章如下所示:
Messages.Add(Path.GetFileName(fileName), ((List<string>)(runResult.Single(m => m.Key == "Messages")).Value)[0]);