Ошибка преобразования при передаче делегата - C#

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

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

Доброго времени суток. Разбираюсь с таким понятием, как делегаты, возник вопрос. В качестве аргумента функции мы можем указать объект делегата, и при вызове передать в функцию другую функцию, удовлетворяющую контракту делегата. Если я создаю делегат типа void , то при вызове функции компилятор говорит что "невозможно преобразовать тип void в тип делегата" Это я что-то неправильно написал, или в принципе мы не можем в качестве формального параметра использовать делегат, возвращающий void
Листинг программы
  1. public delegate void TestVoidDelegate(int obj1, int obj2, ref int obj3);
  2. public class test
  3. {
  4. public TestVoidDelegate testvoiddelegate;
  5. public void Test1(int i, int j, ref int k)
  6. {
  7. k = i+j;
  8. Console.WriteLine(k);
  9. }
  10. public void Test2(TestVoidDelegate i)
  11. {
  12. }
  13. }
  14. public class Test
  15. {
  16. public static void Main()
  17. {
  18. int y=4;
  19. test t = new test();
  20. t.testvoiddelegate = new TestVoidDelegate(t.Test1);
  21. t.testvoiddelegate(1,2, ref y);
  22. t.Test2(t.testvoiddelegate(1,2,ref y));
  23. }
  24. }

Решение задачи: «Ошибка преобразования при передаче делегата»

textual
Листинг программы
  1. using System;
  2. public delegate void TestVoidDelegate(int obj1, int obj2, ref int obj3);
  3. public class test
  4. {
  5.     public TestVoidDelegate testvoiddelegate;
  6.     public void Test1(int i, int j, ref int k)
  7.     {
  8.         k = i+j;
  9.         Console.WriteLine(k);
  10.     }
  11.     public void Test2(TestVoidDelegate i)
  12.     {
  13.         int y=4;
  14.         i(5,6, ref y);
  15.     }
  16. }
  17. public class Test
  18. {
  19.     public static void Main()
  20.     {
  21.         int y=4;
  22.         test t = new test();
  23.         t.testvoiddelegate = new TestVoidDelegate(t.Test1);
  24.         t.testvoiddelegate(1,2, ref y);
  25.         t.Test2(t.testvoiddelegate);
  26.     }
  27. }

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


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

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

7   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы