是否可以将字符串转换为运算符以在逻辑条件中使用.
例如
if(x Convert.ToOperator(">") y) {}
Run Code Online (Sandbox Code Playgroud)
要么
if(x ">" as Operator y){}
Run Code Online (Sandbox Code Playgroud)
我很欣赏这可能不是标准练习题,因此我对那些问我为什么要做这样的事情的答案不感兴趣.
提前致谢
编辑:好的我同意,只是公平地给出一些背景.
我们有围绕反射和XML构建的系统.为了方便起见,我希望能够说出类似的话.
<Value = "Object1.Value" Operator = ">" Condition = "0"/>
Run Code Online (Sandbox Code Playgroud)
编辑:感谢您的评论,我在这里无法正确解释.我想我的问题是通过"你不能"回答的,这绝对是好的(我想的).感谢您的意见.
编辑:Sod it我将要去.
想象一下以下内容
<Namespace.LogicRule Value= "Object1.Value" Operator=">" Condition="0">
Run Code Online (Sandbox Code Playgroud)
这将反映到一个类中,所以现在我想通过调用来测试条件
bool LogicRule.Test()
Run Code Online (Sandbox Code Playgroud)
这就是它需要聚集在一起的地方.
编辑:
好的,所以从未看过Lambdas或Expressions,我想我会照看@ jrista的建议.
我的系统允许对Enums进行解析,因此Expressions因ExpressionType Enum而具有吸引力.
所以我创建了以下类来测试这个想法:
public class Operation
{
private object _Right;
private object _Left;
private ExpressionType _ExpressionType;
private string _Type;
public object Left
{
get { return _Left; }
set { _Left = value; }
}
public object Right
{ …Run Code Online (Sandbox Code Playgroud) 所以我有一个与Stack和Infix到Postfix计算一起工作的赋值.现在我有中缀到Postfix计算但是..有一部分它说我必须计算4个随机数和随机算子.
所以我有一个数字1-9的数组,以及一个由+, - 和*组成的字符数组.
我可以进行随机计算并将其放在一个字符串对象中,但我似乎无法以正确的方式将计算存储在Integer变量中.有了运营商的正确优先级..我已经尝试了一些Switch和If-else语句,但我找不到出路了.
我有一个Stack和一个InToPost类.
计算在代码中如下所示:
String calculation = Integer.toString(numbers[random.nextInt(9)])
+ Character.toString(operators[random.nextInt(2)])
+ Integer.toString(numbers[random.nextInt(9)])
+ Character.toString(operators[random.nextInt(2)])
+ Integer.toString(numbers[random.nextInt(9)])
+ Character.toString(operators[random.nextInt(2)])
+ Integer.toString(numbers[random.nextInt(9)]);
Run Code Online (Sandbox Code Playgroud)
我现在想要的是计算它,但是*运算符的优先级很难.
所有帮助将不胜感激:)
我想知道的是如何将字符串转换为运算符.
我希望能够将一个值与另一个值进行比较,并且它是否为真的条件是字符串.例如,字符串可能是'>'或'> ='或者其他我可以定义为'GREATER_THAN'的东西.
最好的方式只是一个案例,还是有更好的东西使用C#的所有wizadry?