[英]What's the most efficient way to handle infinite tasks in Producer/Consumer?
[英]What is the most efficient way to handle multiple conditions that are picked from the user?
我正在C#中构建一个刮板,用户希望能够键入多个条件:
我们从网页上获取人员,并将其年龄与用户输入的年龄进行比较。
这是最终情况可能的示例:
if((person1.age == AgeTextBox1.Text && person2.age== AgeTextBox2.Text) || ( person1.age = AgeTextBox1.Text && person3.age== AgeTextBox3.Text && person2.age== AgeTextBox2.Text))
{
//do stuff
}
他希望能够使用多达10个不同的年份。
我想到的唯一想法是使用大量的TextBox
和CheckBox
控件,然后使用if-else if
语句处理所有可能的结果,但这似乎很荒谬,因为它需要很多if
语句。
处理所有可能情况的最佳方法是什么?
另一个想法是在用户按下“ Add
”按钮时动态添加TextBox
(或创建用户控件的更好方法)。 然后在创建它们时在List<>
跟踪它们,然后用户按下按钮,在List
循环并逐个检索所有Text
。 无需在设计时添加它们。
运算符优先级和嵌套呢? 唯一合适的解决方案是拥有条件和运算符树,并动态附加条件和运算符节点。 “ UI”示例:
[Conditions]
[Add AND] [Add OR] [Add Condition] [Remove selected node]
AND
Age equals 100
OR
Name equals "Foo"
Name equals "Bar"
代码将类似于
public class Node {
public virtual bool Evaluate(Person p);
}
public class AndNode : Node {
public IList<Node> Children { get; set; }
public override bool Evaluate(Person p) {
foreach(var node in Children) {
if (!node.Evaluate(person))
return false;
}
return true;
}
}
public class AgeNode : Node {
public int Value { get; set; }
public override bool Evaluate(Person p) {
return p.Age == Value;
}
}
... etc
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.