作者:何泳辰_439 | 来源:互联网 | 2022-12-02 16:07
我正在设计一个状态机类,并希望使用lambda表达式来表示满足状态转换对象的条件.当我创建一个新的状态转换对象时,我还想传递一个条件列表,它可以用来评估是否转移到下一个状态.但是,我在初始化条件列表时遇到了问题.这是一个示例,简化的代码示例,说明了我遇到的问题:
// Alias for delegate function
using COndition= Func;
class SomeStateClass
{
public void SomeFuncToCreateConditionList()
{
List cOnditions= new List({
{ new Condition(x => x > 5) },
{ new Condition(x => x > 5 * x) }
});
}
}
我得到一个语法错误就行了柯利括号List({
说法) expected
,并在右括号的另一种语法错误说
new Condition(
; expected
} expected
我确信这里有一些愚蠢的东西,但我一直盯着它看似太久了,似乎无法发现它.任何想法?
1> Kenneth..:
您的List-initializer中有错误.
它应该是new List { ... }
代替new List({...})
你也不需要将每个包裹new Condition()
在大括号中.
这应该工作:
// Alias for delegate function
using COndition= Func;
class SomeStateClass
{
public void SomeFuncToCreateConditionList()
{
List cOnditions= new List
{
new Condition(x => x > 5),
new Condition(x => x > 5 * x)
};
}
}
或者,更短的方法:
public void SomeFuncToCreateConditionList()
{
var cOnditions= new List
{
x => x > 5,
x => x > 5 * x
};
}