2009-07-31 2 views
0

Может нижеследующее было сделано в C# ?:JavaScript-как анонимные функции в C#

var greeting = "Hello" + function() 
{ 
    return " World"; 
}() + "!"; 

Я хочу сделать что-то вдоль линий этого (C# код псевдо):

var cell = new TableCell { CssClass = "", Text = return delegate() 
{ 
    return "logic goes here"; 
}}; 

В основном Я хочу реализовать линейное определение некоторой логики, вместо того, чтобы переместить эту логику кусков в отдельный метод.

ответ

2

Если вы используете анонимный тип, вам необходимо явно указать анонимный метод или лямбда-выражение; если вы назначаете свойство, в котором тип уже известен, вы не будете. Например:

var cell = new TableCell { CssClass = "", Text = (Func<string>) (() => 
{ 
    return "logic goes here"; 
})}; 

Это немного уродливое, но оно работает.

Но да, конечно, вы можете использовать анонимную функцию. Вам нужно явно вызвать его, когда вы хотите, чтобы получить текст, заметьте:

Console.WriteLine("{0}: {1}", cell.CssClass, cell.Text()); 
9
var greeting = "Hello" + new Func<String>(() => " World")() + "!"; 
+0

Обновлено мой вопрос. – roosteronacid

+0

Хех, очень приятно! –

+0

Ваш ответ помог мне, но это не соответствует вопросу, столь же хорошему, как ответ Джона Скита. – roosteronacid

2

Собираюсь положить в более многословным ответить себе:

var tr = new TableRow { CssClass = "" }; 

tr.Cells.AddRange(new [] 
{ 
    new TableCell { CssClass = "", Text = "Hello" }, 
    new TableCell { CssClass = "", Text = new Func<String>(() => 
    { 
     // logic goes here 
     return ""; 
    })()} 
}); 
Смежные вопросы