Присвоение значений массиву bool на основе флажков - PullRequest
0 голосов
/ 09 марта 2012

В моем коде у меня есть класс под названием "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 Ответ

3 голосов
/ 09 марта 2012

Причина, по которой последние две части не будут работать в инициализаторе, заключается в том, что вам нужно сделать это вместо этого:

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