Как использовать значение переменной как ИМЯ переменой или метода,,,? С#

Как использовать значение переменной как ИМЯ переменой или метода,,,? С#
допустим есть несколько десятков методов с такими именами

void Fun1() {....}
void Fun2() {....}
void Fun3() {....}
void Fun4() {....}
итак далее до Func20()

и допустим есть переменная XZ в которую взависимости от работы программы заносится значение от 1 до 20
которое означет какуой именно метод нада запустить

как это реализовать БЕЗ длинной вереницы операторов IF затормаживающего ход програмы

допустим XZ = 10
и нужно вызвать Func10()

можноли вызывать метод какнибуть ТИПА вот ТАК??? ?

FUNC+XZ()

может можно использовать другой подход??? ?

Использование всяких там IF или Swith для проверки значения XZ моем случае неприемлемо затормазит программу

Я какбы новече поэтому также позволю себе спросить еще о возможности запихнуть сами эти методы или их сылки в какойнибуть "массив" и потом обращатся к ним по индексу этого некого "массива"
(походу последнее мое предположение невозможно)
Но тем немение буду рад любому подходу или помощи

  • Итак, привет, автор!

    Первое. Не слушай всяких чепухменов. Оба ответа просто класс. В топку.
    Второе. Не используйте C# как какой-нибудь Паскаль. Это язык с другими возможностями и грех не пользоваться ими, согласны?

    Теперь ближе к теме. Конечно, стоило бы создать массив функций, хотя, какой массив? Можно создать список.

    Описываю. Сначала создаем делегат, это как "тип-функция" в том же Паскале. Потом объявляем список из этих функций, метод для добавления новой функции (индекс будет расти от нуля) . При желании добавьте метод для удаления, ну итд. Мой пример для таких функций, где количесство и тип аргументов будут одинаковыми. У Вас, как я вижу, пустые аргументы, так что не беда. Потом объявляем метод для вызова функции по индексу (опять же, сделайте проверки, не выходит ли индекс за границы массива, ну итд, по вкусу, я лишь базу пишу) .
    Юзать так:
    private Test test = new Test();
    Test.addFunc(< бля-бля>);
    Test.callFuncByIndex(0);

    Сам код:

    public delegate void myFunc();
    public class Test
    {
    private List funcList;
    public Test()
    {
    funcList = new List
    ();
    }

    public addFunc(myFunc mf)
    {
    funcList.Add(mf);
    }

    public callFuncByIndex(int index)
    {
    funcList[a]();
    }
    }

    P.S. Код может быть не на сто процентов рабочим, набирал прямо тут, не вызывая VS, но смысл, надеюсь, ясен. Удачи!

  • В C++ это делается просто. Массив указателей на функции. В питоне тоже так-же делается.
  • Через плюс нельзя, можно через точку) )
    FUNC.XZ(); // где FUNC - класс, а XZ() его метод.