无法将类型void隐式转换为List

无法将类型void隐式转换为List

我有下面的类结构:

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/

10-11 08:59