我在Mvvm代码中发现的示例。
Action<object> actDelegateTakeObjAsParam = (Action<object>) (obj => actionImp());
我想我了解它的作用,但是语法上有麻烦。
答案 0 :(得分:0)
Action<object> actDelegateTakeObjAsParam
声明类型为actDelegateTakeObjAsParam
的名为Action<object>
的变量(一个接受object
并返回void
的委托,即没有返回值)。
= (Action<object>)(obj => actionImp());
向其分配类型为Action<object>
的委托实例,该委托实例采用参数obj
,将其忽略,然后调用actionImp()
(无论如何)。
基本上,它看起来像将委托重新包装为另一种类型-也许actionImp
实际上是Action
,ThreadStart
或MethodInvoker
(所有这些都是无参数的)并且不返回值)或Func<string>
(无参数,但返回string
);这样就可以像使用actionImp
一样使用Action<object>
的意图。
次要注意事项:由于obj
被忽略,因此最近的约定是使用_
代替obj
作为名称,即_ => actionImp()