我有下面的类结构:
class Child
{
public List<ParentData> ParentData { get; set; }
}
class ParentData
{
public string FatherName {get;set;}
public string MotherName {get;set;}
public List<GrandParentData> GrandParentData{ get; set; }
}
class GrandParentData
{
public string GrandFatherName {get;set;}
public string GrandMotherName {get;set;}
}
当我尝试填写此内容时:
foreach (var item in res)
{
obj.StoryData.Add(
new StoryData
{
FatherName = item.FatherName,
MotherName = item.Description,
GrandParentData = new List<GrandParentData().Add(
new GrandParentData
{
GrandFatherName = "",
GrandMotherName = ""
}
);
}
);
}
当我尝试将数据添加到GrandParentList列表时,这给了我错误:
无法将类型void隐式转换为List
我需要更改班级结构吗?我应该对代码进行哪些编辑?
最佳答案
您不能创建新列表,然后以这种方式(分配值)在其上调用Add
代替:
GrandParentData = new List<GrandParentData>().Add(...)
写(使用集合初始化器语法):
GrandParentData = new List<GrandParentData> { new GrandParentData { ... } }
发生特定错误的原因是
Add
是一个无效方法,因此,当您尝试将结果分配给属性时,会出现错误。检查以下代码,看看第一行是好的,但第二行给出了错误:
new List<string>().Add("text");
var list = new List<string>().Add("text");
尽管第一行实际上可以工作并且不会出错,但是由于您没有对该集合的引用,因此现在已经有意义了,并且初始化列表将由GC收集
关于c# - 无法将类型void隐式转换为List,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48680444/