【发布时间】:2020-02-20 11:34:01
【问题描述】:
我正在尝试构建一个简单的泛型类,它应该将一个对象和一个委托作为泛型参数。当我将方法绑定到事件时收到以下错误:
无法将类型“void”隐式转换为“ConsoleApp3.test.Del”
我不明白为什么我收到此错误,因为我的委托返回 void 并且附加到事件的方法也返回 void。
这是代码:
interface ITerminable
{
int Param_1 { get; set; }
}
class test<T,F> where T:ITerminable,new()
where F : Delegate,new()
{
internal delegate void Del();
internal static event Del Ev_fire;
static T a = new T();
static F b = new F();
public static void InvokeEvent()
{
Console.WriteLine("Value not added !");
}
public static void Validate()
{
if (a.Param_1 < 0.5)
{
Console.WriteLine("Value Added");
b.DynamicInvoke();
}
else
{
Ev_fire += InvokeEvent();
Ev_fire?.Invoke();
}
}
}
错误在行:Ev_fire += InvokeEvent();
【问题讨论】:
-
你应该去掉大括号,比如
Ev_fire += InvokeEvent;而不是Ev_fire += InvokeEvent(); -
查看msdn了解详情
标签: c# generics events delegates console-application