初始化 lambda 表达式列表
Initializing a list of lambda expressions
我正在设计一个状态机class,想使用 lambda 表达式来表示满足状态转换对象的条件。当我创建一个新的 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>({
行上的 curley 大括号出现语法错误 ) expected
,在右括号
上出现另一个语法错误
new Condition(
; expected
} expected
我确定我在这里遗漏了一些愚蠢的东西,但我已经盯着它看了太久而且似乎无法发现它。有什么想法吗?
您的列表初始化程序有误。
应该是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
};
}
试试这个
new List<Condition> { ... }
或
new List<Condition>() { ... }
或者如果出于某种原因你想使用构造函数的语法
new List<Condition>(new[] { ... })
我正在设计一个状态机class,想使用 lambda 表达式来表示满足状态转换对象的条件。当我创建一个新的 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>({
行上的 curley 大括号出现语法错误 ) expected
,在右括号
new Condition(
; expected
} expected
我确定我在这里遗漏了一些愚蠢的东西,但我已经盯着它看了太久而且似乎无法发现它。有什么想法吗?
您的列表初始化程序有误。
应该是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
};
}
试试这个
new List<Condition> { ... }
或
new List<Condition>() { ... }
或者如果出于某种原因你想使用构造函数的语法
new List<Condition>(new[] { ... })