我想基于从配置文件(XML文件,FYI)中提取的值来测试条件。我有这样的事情来做检查:
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;
....
如果我设置了条件以便检查这两个条件,那么只有最后一个值可以存活。 IE
<condition alt_max="0.3" alt_min="0"/>
我想要做的是查看值(本例中为t.altitude
)是否介于0和0.3之间。我实际在做的是测试值是否相同为0,因为它必须小于和大于0,因为fact that references are sent to lambda functions。两个实例中的值fVal都为0,因此必须为>=0
和<=0
。
我真的很挣扎如何设置它,以便我可以正确地测试我的条件。有什么建议吗?
答案 0 :(得分:2)
你的lambda正在重用变量fval
,它是在foreach
范围之外定义的。
移动这一行:
float fVal;
foreach
内的应该让它按照你想要的方式工作。