尝试将 Dictionary<string, object> 分配给字符串变量时出现错误
I get an error while trying to assign Dictionary<string, object> to a string variable
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();
}
}
我收到这个错误:
Cannot implicitly convert type 'object' to 'string'. An explicit
conversion exists (are you missing a cast?)
两个选择:
要么使用 Dictionary<string, string>
或
将您从 Dictionary<string, object>
中得到的 object
个实例投射到 string
string mystr = (string)(val.Value);
为什么会出现这样的错误:
在使用 foreach (var val in myVal)
迭代 Collection(Dictionary<string, object>
) 时,每个 val
将是一个 KeyValuePair<string, object>
,其中 val.Key
表示键,val.Value
表示key对应的Value。
在您的情况下,值的类型为 object
,因为您的集合的类型为 <string, object>
。通过使用 string mystr = val.Value;
,您将一个对象分配给一个字符串变量。根据规则,不允许进行此分配。
解法:
将对象转换为字符串,如下所示:
string mystr = (string)(val.Value);
填充Dictionary
的语句myVal.Add("key2", "value2");
表明key和value都是字符串类型所以你可以重新定义Dictionary为
Dictionary<string, string> myVal = new Dictionary<string, string>();
不好意思,我发现有嵌套的字典,其中另一个 List 操作导致了这个问题。我刚刚添加了一些 foreach 循环以进入最终字典并深入研究完美运行的列表。
我最后的作品如下:
Messages.Add(Path.GetFileName(fileName), ((List<string>)(runResult.Single(m => m.Key == "Messages")).Value)[0]);
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();
}
}
我收到这个错误:
Cannot implicitly convert type 'object' to 'string'. An explicit conversion exists (are you missing a cast?)
两个选择:
要么使用 Dictionary<string, string>
或
将您从 Dictionary<string, object>
中得到的 object
个实例投射到 string
string mystr = (string)(val.Value);
为什么会出现这样的错误:
在使用 foreach (var val in myVal)
迭代 Collection(Dictionary<string, object>
) 时,每个 val
将是一个 KeyValuePair<string, object>
,其中 val.Key
表示键,val.Value
表示key对应的Value。
在您的情况下,值的类型为 object
,因为您的集合的类型为 <string, object>
。通过使用 string mystr = val.Value;
,您将一个对象分配给一个字符串变量。根据规则,不允许进行此分配。
解法:
将对象转换为字符串,如下所示:
string mystr = (string)(val.Value);
填充
Dictionary
的语句myVal.Add("key2", "value2");
表明key和value都是字符串类型所以你可以重新定义Dictionary为Dictionary<string, string> myVal = new Dictionary<string, string>();
不好意思,我发现有嵌套的字典,其中另一个 List 操作导致了这个问题。我刚刚添加了一些 foreach 循环以进入最终字典并深入研究完美运行的列表。
我最后的作品如下:
Messages.Add(Path.GetFileName(fileName), ((List<string>)(runResult.Single(m => m.Key == "Messages")).Value)[0]);