【发布时间】:2022-01-18 22:24:15
【问题描述】:
我正在尝试将值添加到外部变量 val_dict 从 if 和 else 循环中的块。问题是 if 块的输出类型与 else 块的输出类型不同,如果我将变量初始化为输出类型类之一,则会为它们中的任何一个抛出类型错误。
简而言之,val_dict 是一个可以是字典null object 的对象,但我似乎无法为这两种对象类型定义一个通用类型。
代码如下:
Dictionary<string, Dictionary<string,object>> data_dict =
new Dictionary<string, Dictionary<string, object>>();
foreach (KeyValuePair<(string, string), object> cat_nam_val in dataset)
{
var val_dict = new Dictionary<string, object>(); //use val_dict as dictionary or object
if (target_survey_id != null)
{
data_dict[target_survey_id].TryGetValue(cat_nam_val.Key.Item1, out val_dict);
}
else
{
data_dict.TryGetValue(cat_nam_val.Key.Item1, out val_dict);
}
if (IsDictionary(val_dict));
{
val_dict[cat_nam_val.Key.Item2] = cat_nam_val.Value; //generate new dict becoz val_dict is an object so cannot be indexed
}
}
【问题讨论】:
-
我已经清理了您注释掉的代码和多余的空格。也就是说,仍然不清楚您要做什么。没有迹象表明
data_dict是什么,它来自哪里,或者它应该如何工作。此外,使用字典作为输出参数很可能没有意义。 -
谢谢我也添加了
data_dict的初始化,问题是val_dict可能是字典或 null object,具体取决于数据。我需要创建一个包含这两种对象类型的类。我试图绕过它但失败了。
标签: c# .net dictionary