在列表中存储类数据

时间:2014-09-15 18:02:29

标签: c# list

我有一个这样的类,我想存储在一个定义为静态变量的列表中。我在这里引用了这个引用:Storing data into list with class

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"
    });

我做错了什么?

3 个答案:

答案 0 :(得分:2)

您无法使用初始化程序语法访问对象并初始化它所拥有的数组的成员。你可以解决这个问题,如下所示:

var fac = new Faculty {
     Name = txtTeachherName.Text, 
     Dept = cmbDepts.Items.CurrentItem.ToString(), 
     subInterest = new []{"HELLO", null, null, null}}

或初始化后:

fac.subInterest[0] = "HELLO";

答案 1 :(得分:0)

问题是由于:

subInterest[0] = "HELLO"

你不能在Object Initializer中部分初始化一个数组,无论它是满的还是什么都没有,你可以这样做:

subInterest = new string[]{"HELLO"}

但是,这会使数组subInterest的大小为1,而不是大小4,就像您在班级中定义的那样。要获得相同大小的数组,您可以这样做:

subInterest = new string[]{"HELLO",null,null,null}

另一种选择是使用List<string>而不是数组。您可以使用值对其进行初始化,然后可以向其中添加项目。

修改你的类,如:

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"}
};

答案 2 :(得分:0)

使用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);