我试图通过使用以下代码将值传递给同一对象的列表。
使用以下代码我得到一个“字段初始值设定项不能引用非静态字段,方法或属性”错误。
如果我更改Surname属性以解决此问题,我会再犯2个错误。
这个想法是创建一个人的对象,并将他们的姓氏传递给他们在列表中的孩子。
代码:
public class Person
{
public Person()
{
}
private string name = "";
public string Name
{
get { return name; }
set { if (name != value) name = value; }
}
private string surname = "";
public string Surname
{
get { return surname; }
set { if (surname != value) surname = value; }
}
private Children sourceList = new Children(Surname);
public Children SourceList
{
get { return sourceList; }
set { if (sourceList != value) sourceList = value; }
}
}
[TypeConverter(typeof(TypeConverter))]
public class Children : List<Person>
{
public Children(string surname)
{
this.ForEach(person => { person.Surname = surname; });
}
}
请帮帮忙? 提前谢谢。
答案 0 :(得分:0)
从Children类中删除构造函数,并将'foreach语句'放在SourceList集中,如果不是inicial化,则只在getter中创建一个新的源列表。
就像这样:
public class Person
{
public Person()
{
}
private string name = "";
public string Name
{
get { return name; }
set { if (name != value) name = value; }
}
private string surname = "";
public string Surname
{
get { return surname; }
set { if (surname != value) surname = value; }
}
private Children sourceList;
public Children SourceList
{
get {
if(sourceList == null)
sourceList = new Children();
return sourceList;
}
set { if (sourceList != value)
sourceList = value.ForEach(person => { person.Surname = surname; });
}
}
}
[TypeConverter(typeof(TypeConverter))]
public class Children : List<Person>
{
}
答案 1 :(得分:0)
这一行导致了您的问题:private Children sourceList = new Children(Surname);
原因是字段初始值设定项受限于它们可以访问的内容,c#规范声明它们无法引用正在创建的实例,因此您可以“在字段声明中访问Surname。”
您可以在构造函数
中设置属性