根据复选框将值分配给bool数组

时间:2012-03-09 17:35:12

标签: c# arrays list initialization boolean

在我的代码中,我有一个名为“teacher”的类,里面有一些数组:

public class teacher
    {
        //monday
        public bool[] mon = new bool[11];

        //tuesday
        public bool[] tue = new bool[11];

        //wednesday
        public bool[] wed = new bool[11];

        //thursday
        public bool[] thu = new bool[11];

        //fri
        public bool[] fri = new bool[11];
    };

还有一个老师名单:

       List<teacher> teachers = new List<teacher>();

现在,一旦我点击添加教师的按钮,我希望这些数组填充相关复选框的值,即。

 teachers.Add(new teacher
        {
            mon[0] = checkBox25.Checked,
            mon[1] = checkBox26.Checked,
            mon[2] = checkBox27.Checked,
        }

但它不会让我访问mon [0],因为它说“无效的初始化成员声明符”。关于如何分配价值的任何想法?

我还将最后一段代码更改为:

mon = {checkBox25.Checked, checkBox26.Checked, checkBox27.Checked, checkBox28.Checked, checkBox29.Checked, checkBox30.Checked, checkBox31.Checked, checkBox32.Checked, checkBox33.Checked, checkBox34.Checked, checkBox35.Checked},

但现在它说它无法使用集合初始值设定项初始化bool []类型的对象。

如果有人知道如何处理这件事,那我真的很感激。

1 个答案:

答案 0 :(得分:3)

你的最后两部分在初始化程序中不起作用的原因是你需要这样做:

teachers.Add(new teacher
    {
        mon = new[] 
            {
                checkBox25.Checked, 
                checkBox26.Checked, 
                checkBox27.Checked, 
                checkBox28.Checked, 
                checkBox29.Checked, 
                checkBox30.Checked, 
                checkBox31.Checked, 
                checkBox32.Checked, 
                checkBox33.Checked, 
                checkBox34.Checked, 
                checkBox35.Checked
            },
        // etc...
    });

你需要new[]来构造新的bool数组,然后初始化列表指示其内容。

也就是说,你最好一起收集你的复选框控件(在一个数组或List<T>等),以便你可以在你的任务中查询它们,如:

teachers.Add(new teacher
    {
        mon = monCheckBoxes.Select(cb => cb.Checked).ToArray(),
        tue = // etc... 
    });