@postya

Как заменить конструкцию if else на switch?

Имеется несколько кнопок, при нажатии на каждую происходят изменения с другими элементами.
Здесь я написал код для 2 кнопок, а всего их будет 8
Я использовал состояния if else. Все работает, но все довольно громоздко
Как можно применить switch вместо if else, чтобы было более компактно в коде?

CategoryToggle1 - кнопки
RectCategory1 - прямоугольник

if (CategoryToggle1.IsChecked == true)
                {
                    RectCategory1.Fill = new SolidColorBrush(dialog.Color);

                    Properties.Settings.Default.RectangleCategory1 = new BrushConverter().ConvertToString(dialog.Color);

                }
                else if (CategoryToggle2.IsChecked == true)
                {
                    RectCategory2.Fill = new SolidColorBrush(dialog.Color);

                    Properties.Settings.Default.RectangleCategory2 = new BrushConverter().ConvertToString(dialog.Color);
                }
  • Вопрос задан
  • 329 просмотров
Решения вопроса 1
freeExec
@freeExec
Участник OpenStreetMap
Но со switch не будет компактней.
Компактней будет если ты свои CategoryToggle и RectangleCategory разместишь в массивы. И тогда у тебя логика будет только одна, проверить чекер и применить браш.
for (int i = 0; i < categoryToggleArr.Length; i++)
{
   if (categoryToggleArr[i].IsChecked)
   {
      RectCategoryArr[i].Fill = new SolidColorBrush(dialog.Color);
      RectangleCategoryArr[i] = new BrushConverter().ConvertToString(dialog.Color);
   }
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
switch работает по одной переменной.
у вас же 2
CategoryToggle1.IsChecked
CategoryToggle2.IsChecked
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы