将类数据存储在列表中
本文关键字:列表 存储 数据 | 更新日期: 2023-09-27 18:22:00
我有一个这样的类,我想存储在一个定义为静态变量的列表中。我遵循这里的参考:用类将数据存储到列表中
public class Faculty
{
public string Name { get; set; }
public string Dept { get; set; }
public string[] subInterest = new string[4];
}
但是,当我尝试按如下方式初始化列表时,数组部分出现问题:无效的初始化器成员声明符
SaveDirectory.list_of_faculty.Add(
new Faculty
{
Name = txtTeachherName.Text,
Dept = cmbDepts.Items.CurrentItem.ToString(),
subInterest[0] = "HELLO"
});
我做错了什么?
您无法访问对象并使用初始化器语法初始化它所包含的数组的成员。你可以这样做:
var fac = new Faculty {
Name = txtTeachherName.Text,
Dept = cmbDepts.Items.CurrentItem.ToString(),
subInterest = new []{"HELLO", null, null, null}}
或初始化后:
fac.subInterest[0] = "HELLO";
问题是由于:
subInterest[0] = "HELLO"
您不能在Object Initializer中部分初始化数组,要么数组已满,要么什么都没有。您可以执行:
subInterest = new string[]{"HELLO"}
但是,这将使数组subInterest
的大小为1
,而不是像您在类中定义的那样为4
。要获得相同大小的数组,可以执行以下操作:
subInterest = new string[]{"HELLO",null,null,null}
另一个选项是使用List<string>
而不是Array。你可以用值初始化它,然后你可以向它添加项目。
修改你的类,如:
public class Faculty
{
public string Name { get; set; }
public string Dept { get; set; }
public List<string> subInterest;
}
然后:
new Faculty
{
Name = txtTeachherName.Text,
Dept = cmbDepts.Items.CurrentItem.ToString(),
subInterest = new List<string>(){"HELLO"}
};
使用constructor
也可以解决类似的问题
public class Faculty
{
public string Name { get; set; }
public string Dept { get; set; }
public string[] subInterest = new string[4];
public Faculty(string name, string dept, string[] si)
{
this.Name = name;
this.Dept = dept;
this.subInterest = si;
}
}
然后实例化教员类
string[] subinterest = new string[]{"reading","swmming",null,null};
var fac = new Faculty("dgdfgdfgfg","dfgdgfgdfg", subinterest);