Массив методов - C#

Узнай цену своей работы

Формулировка задачи:

Есть класс, в нем есть не НЕСТАТИЧЕСКИЕ методы, которые принимают 3 переменные типа integer и ничего не возвращают. Нужно сделать массив ссылок на эти методы, чтобы к ним можно было обращаться по индексу methods[i]. Вариант с массивом делегатов не совсем подходит, т.к. тогда методы должны быть статическими, а в них идет работа с переменными вызывающего объекта. В принципе их можно сделать статическими, но тогда в них еще придется передавать ссылку на объект, для которого онии вызываются (что немного не кошерно). Подскажите плз, может быть есть способ создать этот массив без static?

Решение задачи: «Массив методов»

textual
Листинг программы
void Main()
{
    var methods = new Action<int, int, int>[5];
    
    var foo = new Foo();
    
    for (int i = 0; i < methods.Length; i++)
        methods[i] = foo.Do;
        
    for (int i = 0; i < methods.Length; i++)
        methods[i](5, 5, 5);
        
    Console.WriteLine(foo.Sum);
}
 
class Foo
{
    public int Sum;
    
    public void Do(int a, int b, int c)
    {
        Sum += a + b + c;   
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.923 из 5
Похожие ответы