Вы можете использовать анонимные методы:
Func<string> anonymousFunction = () => { string name = "bob"; return name; };
string myName = anonymousFunction();
Синтаксис в первой строке - это лямбда, то есть C # 3.0 и выше способ объявления анонимных методов.Вышеприведенная функция не принимает аргументов, но ничто не мешает вам также включить их:
Func<string, string> makeUppercase = x => x.ToUpper();
string upperCase = makeUppercase("lowercase");
Обратите внимание, что, поскольку есть только один параметр, вы можете опустить скобки вокруг него.Кроме того, поскольку весь метод является одним оператором возврата, вы можете исключить как фигурные скобки, так и сам оператор return
.
Этот тип лямбды очень распространен при использовании методов расширения LINQ,поскольку многим из них требуется метод с одним аргументом, который возвращает значение:
var numbers = new List<int>() { 1, 2, 3, 4 };
var divisibleByTwo = numbers.Where(num => num % 2 == 0);
Чтобы ответить на ваш реальный вопрос, этот синтаксис недопустим в C #.Если вы попробуете это:
string output = (x => x.ToUpper())("lowercase");
Вы получите сообщение об ошибке «Имя метода ожидается».Сначала необходимо назначить анонимный метод делегату.