使用定义变量的 Lambda 函数

Lambda functions using defined variables

我想根据从配置文件(XML 文件,仅供参考)中提取的值来测试条件。我有这样的东西来做检查:

List<Condition> conditions = new List<Condition>();
float fVal;
foreach (XmlAttribute attr in conNode.Attributes)
{
    switch (attr.Name.ToLower())
    {
        case "alt_max":
            fVal = float.Parse(attr.Value);
            conditions.Add((t) => { return t.altitude <= fVal; });
            break;
        case "alt_min":
            fVal = float.Parse(attr.Value);
            conditions.Add((t) => { return t.altitude >= fVal; });
            break;

....

如果我的条件设置为检查这两个条件,则只有最后一个值会保留下来。浏览器

<condition alt_max="0.3" alt_min="0"/>

我想做的是查看值(在本例中为 t.altitude)是否在 0 到 0.3 之间。我实际上在做的是测试该值是否相同为 0,因为由于 fact that references are sent to lambda functions,它必须小于和大于 0。两个实例中的值 fVal 都将为 0,因此它必须为 >=0<=0.

我真的很纠结如何设置才能正确测试我的条件。有什么建议吗?

您的 lambda 正在重用变量 fval,它在 foreach 的范围之外定义。

移动这条线:

float fVal;

foreach 中应该可以按照您想要的方式工作。