Вградения Action делегат в C#


1

Здравейте колеги,

Цял ден се мъчих да намеря инфо за Action и Func, но така и не случих както и да е...

Проблема е следния:

Имам дефиниран клас Х в отделен Namespace У, и вътре имам един void  MyMethod() и един static void OtherMethod() методи и двата не приемат аргументи.

В отделен проект, в който съм реферирал дадения Namespace У създавам инстанция на съответния клас Х и искам да направя Action act = (името-на-инстанцията).MyMethod();

или Action act = Х.OtherMethod(); но и в двата случая не се компилира дава ми 

Error 1 Cannot implicitly convert type 'void' to 'System.Action'

Когато обаче му кажа Action act = () => (името-на-инстанцията).MyMethod(); или Action act = () => Х.OtherMethod(); се компилира и работи както се очаква...

Ако някой по-напреднал може да ми разясни това явление бих бил много признателен. Благодаря и хубав ден на всички!!!




Отговори



2

Махни скобите 

Action act = (името-на-инстанцията).MyMethod

мисля от тук идва проблема

MSDN


от todorovh (2055 точки)


1
Човек написъл съм го така (името-на-инстанцията) за да не пиша конкретното име, в моя код е без скобите и определено не е това проблема...

от markovood (374 точки)

1

скобите накрая 

MyMethod вместо MyMethod()

Action act = (името-на-инстанцията).MyMethod();

Когато напишеш това, извикваш функцията и се оптиваш да присвоиш резултата ( void ) на делегата, сътветно получаваш грешката че не можеш да присвоиш void


от todorovh (2055 точки)