Другие языки программирования и технологии

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

допустим есть несколько десятков методов с такими именами

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

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

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

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

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

FUNC+XZ()

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

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

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

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

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

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

Сам код:

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

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

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

P.S. Код может быть не на сто процентов рабочим, набирал прямо тут, не вызывая VS, но смысл, надеюсь, ясен. Удачи!
Андрей Кожевников
Андрей Кожевников
1 237
Лучший ответ
Через плюс нельзя, можно через точку) )
FUNC.XZ(); // где FUNC - класс, а XZ() его метод.
В C++ это делается просто. Массив указателей на функции. В питоне тоже так-же делается.