Почему не работает этот лямбда-пример с сайта MSDN? - PullRequest
2 голосов
/ 10 марта 2009

Что мне нужно сделать с следующим лямбда-примером, чтобы он заработал?

ОШИБКА: В качестве оператора могут использоваться только выражения присваивания, вызова, приращения, уменьшения и новых объектов

http://msdn.microsoft.com/en-us/library/bb397687.aspx

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Linq.Expressions;

namespace TestLambda
{
    class Program
    {
        static void Main(string[] args)
        {
            delegate int del(int i);
            del myDelegate = x => x * x;
            int j = myDelegate(5); //j = 25
        }

    }

}

Ответы [ 2 ]

6 голосов
/ 10 марта 2009

Вам необходимо объявить делегата вне метода:

class Program
{
    delegate int del(int i);

    static void Main(string[] args)
    {            
        del myDelegate = x => x * x;
        int j = myDelegate(5); //j = 25
    }

}
6 голосов
/ 10 марта 2009

Недопустимо определять тип как оператор тела метода в C #. Вам нужно переместить делегат за пределы метода, чтобы компилировать его. Например

    delegate int del(int i);

public static void Main(string[] args) {

    del myDelegate = x => x * x;
    int j = myDelegate(5); //j = 25
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...