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

Тема в разделе ".NET", создана пользователем rash, 3 мар 2008.

Наш партнер Genesis Hackspace
  1. rash

    rash Гость

    Только-только начал заниматься с C# и сразу наткнулся на такую задачу:
    Есть несколько функций.
    Нужно вызвать случайную функцию из списка, этот список изменяется во время выполнения программы, то есть в него могут быть добавлены/удалены функции в процессе выполнения.
    Пока нашел такое решение:
    Код (Text):
            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 - функции, из которых надо выбрать случайную.
    Есть ли более красивое решение этой задачи, или это вполне допустимо? Пока мой уровень знаний не позволяет найти лучшее, а заучивать плохой подход и делать его привычным очень не хочется...
     
  2. Pasha

    Pasha Гость

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

    rash Гость

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

Поделиться этой страницей