Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как в Action использовать ключевое слово return ? / 9 сообщений из 9, страница 1 из 1
03.06.2014, 18:40
    #38660568
Pruvetik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Action использовать ключевое слово return ?
Вопрос странный наверное.

Имеется метод, принимающий простой Action.

Хочу написать просто:
Код: c#
1.
2.
3.
4.
5.
private int Process ()
{
Action act = () => { ...вычисляем... return result; }; // Хочу, чтобы результат вернулся сразу из Process
MyObj.Func (act);
}



Но ловлю ошибку
Код: xml
1.
"System.Action" возвращает значение void, поэтому после ключевого слова return не должно присутствовать выражение объекта



Я конечно могу написать так
Код: c#
1.
2.
3.
4.
int i = 0;
Action act = () => {i = 5; };
MyObj.Func (act);
return i;



Но можно как-то все же первым вариантом ? Второй вариант мне кажется довольно громоздким.
...
Рейтинг: 0 / 0
03.06.2014, 18:46
    #38660578
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Action использовать ключевое слово return ?
Pruvetik,

А где гарантия, что MyObj.Func вызывает act синхронно?
...
Рейтинг: 0 / 0
03.06.2014, 18:48
    #38660581
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Action использовать ключевое слово return ?
Pruvetik, используй Func<int>
...
Рейтинг: 0 / 0
03.06.2014, 19:09
    #38660618
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Action использовать ключевое слово return ?
Pruvetik,
авторКак в Action использовать ключевое слово return ?
Да никак
...
Рейтинг: 0 / 0
03.06.2014, 19:13
    #38660623
Pruvetik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Action использовать ключевое слово return ?
bazile,

Спасибо.
Получилось так:
return MyObj.MyFunc<int>(() => { ...; return result; });

В вполне компактно.

Изопропил,
О синхронизации я позаботился, этим как раз MyObj.MyFunc и занимается в блоках try finally (внутри себя). Все ок. Спасибо за предупреждение :)
...
Рейтинг: 0 / 0
04.06.2014, 11:10
    #38661099
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Action использовать ключевое слово return ?
чем отличаются out и ref?
...
Рейтинг: 0 / 0
04.06.2014, 18:40
    #38661838
pation
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Action использовать ключевое слово return ?
PruvetikВопрос странный наверное.

Имеется метод, принимающий простой Action.

Хочу написать просто:
Код: c#
1.
2.
3.
4.
5.
private int Process ()
{
Action act = () => { ...вычисляем... return result; }; // Хочу, чтобы результат вернулся сразу из Process
MyObj.Func (act);
}




Но ловлю ошибку
Код: xml
1.
"System.Action" возвращает значение void, поэтому после ключевого слова return не должно присутствовать выражение объекта




Я конечно могу написать так
Код: c#
1.
2.
3.
4.
int i = 0;
Action act = () => {i = 5; };
MyObj.Func (act);
return i;




Но можно как-то все же первым вариантом ? Второй вариант мне кажется довольно громоздким.

Код: c#
1.
2.
3.
4.
5.
private int Process ()
{
Func act = () => { ...вычисляем... return result; }; // Хочу, чтобы результат вернулся сразу из Process
MyObj.Func (act);
}
...
Рейтинг: 0 / 0
04.06.2014, 18:41
    #38661839
pation
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Action использовать ключевое слово return ?
pationPruvetikВопрос странный наверное.

Имеется метод, принимающий простой Action.

Хочу написать просто:
Код: c#
1.
2.
3.
4.
5.
private int Process ()
{
Action act = () => { ...вычисляем... return result; }; // Хочу, чтобы результат вернулся сразу из Process
MyObj.Func (act);
}





Но ловлю ошибку
Код: xml
1.
"System.Action" возвращает значение void, поэтому после ключевого слова return не должно присутствовать выражение объекта





Я конечно могу написать так
Код: c#
1.
2.
3.
4.
int i = 0;
Action act = () => {i = 5; };
MyObj.Func (act);
return i;





Но можно как-то все же первым вариантом ? Второй вариант мне кажется довольно громоздким.

Код: c#
1.
2.
3.
4.
5.
private int Process ()
{
Func act = () => { ...вычисляем... return result; }; // Хочу, чтобы результат вернулся сразу из Process
MyObj.Func (act);
}



сорь написал на коленке, правильно будет:
Код: c#
1.
2.
3.
4.
5.
private int Process ()
{
Func<возвращаемый тип> act = () => { ...вычисляем... return result; }; // Хочу, чтобы результат вернулся сразу из Process
MyObj.Func (act);
}
...
Рейтинг: 0 / 0
04.06.2014, 19:02
    #38661862
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Action использовать ключевое слово return ?
pation,
я так понял что MyObj.Func void.. return из Process () надо?
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как в Action использовать ключевое слово return ? / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]