допустим есть несколько десятков методов с такими именами
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<myfunc> funcList;
public Test()
{
funcList = new List<myfunc>();
}
public addFunc(myFunc mf)
{
funcList.Add(mf);
}
public callFuncByIndex(int index)
{
funcList[a]();
}
}
P.S. Код может быть не на сто процентов рабочим, набирал прямо тут, не вызывая VS, но смысл, надеюсь, ясен. Удачи!
Первое. Не слушай всяких чепухменов. Оба ответа просто класс. В топку.
Второе. Не используйте 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, но смысл, надеюсь, ясен. Удачи!
Через плюс нельзя, можно через точку) )
FUNC.XZ(); // где FUNC - класс, а XZ() его метод.
FUNC.XZ(); // где FUNC - класс, а XZ() его метод.
В C++ это делается просто. Массив указателей на функции. В питоне тоже так-же делается.
Похожие вопросы
- Как вернуть значение переменной присвоенное ранее? Pascal
- [C++] Почему не рекомендуют использовать глобальные переменные?
- Определите значение переменных x и y после выполнения фрагмента алгоритма.
- Помогите с заданием по написанию программы на языке ассемблер, вычисляющую значение переменной R.
- Нужна программа на языке ассемблер, вычисляющую значение переменной R.
- Нужна программа на языке ассемблер, вычисляющую значение переменной R.
- Перераспределить значения переменных (x,y,z)
- Объясните, что значит значение переменной?
- С++ Проверка на некорректный ввод значения переменной
- Подскажите как решить используя динамические переменные ( С++)