Есть ли способ в C# создать и вызвать анонимную функцию внутри выражения?
Без предварительного объявления переменной-делегата.
Что-то вроде этого:
int i32 = () => { int x = 5; int y = 6; return( x+y ); }();
или
int i32 = (() => { int x = 5; int y = 6; return( x+y ); })();
или
int32 = this.Invoke( () => { int x = 5; int y = 6; return( x+y ); } );
Работающий вариант #1 от @PashaPash и @Pavel Mayorov:
int i32 = ((Func
Работающий вариант #2 от @Stack:
int i32 = new Func
Работающий вариант #3 от @Stack: (чемпион по краткости, по красоте - для ценителей)
int i32; new Action(() => { int x = 5; int y = 6; i32 = x + y; })();
Ответ на вопрос @Stack "Зачем это надо?:"
Для красоты и компактности, требуется редко, вот пример:
int i1 = 5 + 6;
int i2 = 7 + 8;
int i3 = ((Func
Вот, ещё один пример из реальной жизни:
Style s = new Style();
s.TargetType = typeof(System.Windows.Controls.ComboBox);
s.Setters.Add(new Setter(System.Windows.Controls.ComboBox.FontSizeProperty, 11.0));
s.Setters.Add(new Setter(System.Windows.Controls.ComboBox.BackgroundProperty, ((Func
Ответ
Это можно сделать вот так:
var q = ((Func
Это - единственный способ.
Комментариев нет:
Отправить комментарий