Инициализация списка лямбда-выражений - PullRequest
0 голосов
/ 10 октября 2018

Я разрабатываю класс конечного автомата и хочу использовать лямбда-выражения для представления условий, удовлетворяющих объектам перехода состояний.Когда я создаю новый объект State State Transition, я также хочу передать ему список условий, которые он может использовать, чтобы оценить, следует ли перейти к следующему состоянию.Однако у меня проблемы с инициализацией списка Условий.Вот пример упрощенного кода, который иллюстрирует мою проблему:

// Alias for delegate function
using Condition = Func<int, bool>;

class SomeStateClass
{
    public void SomeFuncToCreateConditionList()
    {
        List<Condition> conditions = new List<Condition>({
            { new Condition(x => x > 5) },
            { new Condition(x => x > 5 * x) }
        });
    }
}

Я получаю синтаксическую ошибку для фигурной скобки в строке List<Condition>({, говорящую ) expected, и другуюсинтаксическая ошибка в закрывающей скобке, говорящая

new Condition(
; expected
} expected

Я уверен, что есть какая-то глупость, которую я здесь упускаю, но я слишком долго на нее смотрю и не могу ее заметить.Есть мысли?

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Попробуйте это

new List<Condition> { ... }

или

new List<Condition>() { ... }

или если по какой-то причине вы хотите использовать синтаксис конструктора

new List<Condition>(new[] { ... })
0 голосов
/ 10 октября 2018

У вас есть ошибка в инициализаторе списка.

Это должно быть new List<Condition> { ... } вместо new List<Condition>({...}) Вам также не нужно заключать в скобки каждый new Condition().

Это должно работать:

// Alias for delegate function
using Condition = Func<int, bool>;

class SomeStateClass
{
    public void SomeFuncToCreateConditionList()
    {
        List<Condition> conditions = new List<Condition>
        {
            new Condition(x => x > 5),
            new Condition(x => x > 5 * x)
        };
    }
}

или, более короткий метод:

public void SomeFuncToCreateConditionList()
{
    var conditions = new List<Condition>
    {
        x => x > 5,
        x => x > 5 * x
    };
}
...