Как вызвать метод, в засисимости от значения переменной? Есть объект, в конструкторе которого указывается параметр. У объекта необходимо вызывать метод do(), который в зависимости от параметра должен выполнять другой метод. Как это реализовать без switch именно в c#?

2 Июл 2020 в 19:48
290 +1
0
Ответы
1

В C# можно использовать делегаты и лямбда-выражения для решения этой задачи. Например, можно создать словарь, в котором ключами будут значения параметра, а значениями будут делегаты, вызывающие соответствующие методы. Затем можно передать параметр объекту и вызвать соответствующий метод, используя делегат из словаря.

Пример реализации:

using System;
using System.Collections.Generic;
public class MyClass
{
private int _parameter;
private Dictionary<int, Action> _actions = new Dictionary<int, Action>();
public MyClass(int parameter)
{
_parameter = parameter;
_actions.Add(1, () => Method1());
_actions.Add(2, () => Method2());
}
public void doSomething()
{
if (_actions.ContainsKey(_parameter))
{
_actions[_parameter]();
}
else
{
Console.WriteLine("No method for this parameter.");
}
}
private void Method1()
{
Console.WriteLine("Method 1 called.");
}
private void Method2()
{
Console.WriteLine("Method 2 called.");
}
}
class Program
{
static void Main()
{
MyClass obj1 = new MyClass(1);
obj1.doSomething(); // Output: Method 1 called
MyClass obj2 = new MyClass(2);
obj2.doSomething(); // Output: Method 2 called
MyClass obj3 = new MyClass(3);
obj3.doSomething(); // Output: No method for this parameter
}
}

В этом примере при создании объекта MyClass указывается параметр, который определяет, какой метод необходимо вызвать при вызове метода doSomething(). При этом используются делегаты и лямбда-выражения для привязки методов к значениям параметра.

18 Апр 2024 в 10:49
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир