0

ステート マシン クラスを設計しており、ラムダ式を使用して状態遷移オブジェクトを満たす条件を表現したいと考えています。新しい 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

ここに何か愚かなものがあると確信していますが、あまりにも長い間それを見つめていて、それを見つけることができないようです. 何か考えはありますか?

4

2 に答える 2

5

リスト初期化子に誤りがあります。

また、それぞれを中かっこで囲む 必要はありません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
    };
}
于 2018-10-10T15:22:42.260 に答える