Ошибка преобразования при передаче делегата - C#
Формулировка задачи:
Доброго времени суток. Разбираюсь с таким понятием, как делегаты, возник вопрос.
В качестве аргумента функции мы можем указать объект делегата, и при вызове передать в функцию другую функцию, удовлетворяющую контракту делегата.
Если я создаю делегат типа void , то при вызове функции компилятор говорит что "невозможно преобразовать тип void в тип делегата"
Это я что-то неправильно написал, или в принципе мы не можем в качестве формального параметра использовать делегат, возвращающий void
public delegate void TestVoidDelegate(int obj1, int obj2, ref int obj3); public class test { public TestVoidDelegate testvoiddelegate; public void Test1(int i, int j, ref int k) { k = i+j; Console.WriteLine(k); } public void Test2(TestVoidDelegate i) { } } public class Test { public static void Main() { int y=4; test t = new test(); t.testvoiddelegate = new TestVoidDelegate(t.Test1); t.testvoiddelegate(1,2, ref y); t.Test2(t.testvoiddelegate(1,2,ref y)); } }
Решение задачи: «Ошибка преобразования при передаче делегата»
textual
Листинг программы
using System; public delegate void TestVoidDelegate(int obj1, int obj2, ref int obj3); public class test { public TestVoidDelegate testvoiddelegate; public void Test1(int i, int j, ref int k) { k = i+j; Console.WriteLine(k); } public void Test2(TestVoidDelegate i) { int y=4; i(5,6, ref y); } } public class Test { public static void Main() { int y=4; test t = new test(); t.testvoiddelegate = new TestVoidDelegate(t.Test1); t.testvoiddelegate(1,2, ref y); t.Test2(t.testvoiddelegate); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д