• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

выбор случайной функции

  • Автор темы rash
  • Дата начала
R

rash

Только-только начал заниматься с C# и сразу наткнулся на такую задачу:
Есть несколько функций.
Нужно вызвать случайную функцию из списка, этот список изменяется во время выполнения программы, то есть в него могут быть добавлены/удалены функции в процессе выполнения.
Пока нашел такое решение:
Код:
		ArrayList dArray = new ArrayList();

// динамическое формирование списка
dArray.Add(new CallFunc(test1));
dArray.Add(new CallFunc(test2));
dArray.Add(new CallFunc(test3));
// список сформирован

Random randomizer = new Random();
CallFunc FTest = (CallFunc)dArray[randomizer.Next(3)];
FTest();
Где CallFunc - это делегат, test1, test2, test3 - функции, из которых надо выбрать случайную.
Есть ли более красивое решение этой задачи, или это вполне допустимо? Пока мой уровень знаний не позволяет найти лучшее, а заучивать плохой подход и делать его привычным очень не хочется...
 
P

Pasha

Замени dArray[randomizer.Next(3)] на dArray[randomizer.Next(dArray.Count)].
Если пишешь под 2-й .net, используй List<CallFunc> вместо ArrayList.
Если вызывать случайную функцию приходится в нескольких местах, создай класс-наследник ArrayList/List<CallFunc> и вынеси код вызыва в его метод, а randomizer - в поле этого класса.
 
R

rash

Спасибо.
Меня в основном смущает необходимость приведения типов для делегата, после других языков несколько непривычно...
Надо будет посмотреть на предмет List<CallFunc>, только-только осваиваюсь с языком - довольно сложно все сразу учесть...
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!