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()