【问题标题】:Storing Class Data In A List将类数据存储在列表中
【发布时间】:2014-09-16 02:15:35
【问题描述】:

嗯,我有一个这样的类,我想存储在一个定义为静态变量的列表中。我在这里关注参考: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];
}

但是,当我尝试按如下方式初始化列表时,数组部分出现问题:Invalid initializer member declarator

SaveDirectory.list_of_faculty.Add(
    new Faculty
    {
        Name = txtTeachherName.Text,
        Dept = cmbDepts.Items.CurrentItem.ToString(),
        subInterest[0] = "HELLO"
    });

我做错了什么?

【问题讨论】:

    标签: c# list


    【解决方案1】:

    您无法使用初始化语法访问您的对象并初始化它所包含的数组的成员。您可以按以下方式解决此问题:

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

    或初始化后:

    fac.subInterest[0] = "HELLO";
    

    【讨论】:

    • 有更好的方法吗?我的意思是专业人士的表现如何?
    【解决方案2】:

    问题是由于:

    subInterest[0] = "HELLO"
    

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

    subInterest = new string[]{"HELLO"}
    

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

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

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

    修改你的类:

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

    【讨论】:

    • @Downvoter,请您指出错误,以便我改进。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2014-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-23
      • 1970-01-01
      • 2022-06-14
      • 2011-03-05
      相关资源
      最近更新 更多