Ошибка преобразования при передаче делегата - 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);
}
}