如何使用Nreco LambdaParser包使用按位运算符解析字符串表达式?

时间:2018-08-28 18:13:34

标签: c# nreco

我有以下代码,但无法编译,使用Nreco lambda解析器包时,我试图找到有关按位运算符的任何信息,但我没有找到示例。

    var lambdaParser = new NReco.Linq.LambdaParser();
    var varContext = new Dictionary<string, object>();

    varContext["numA"] = 3;

    var varResult = lambdaParser.Eval("(numA & 1) == 1 ? true : false", varContext);
    Console.WriteLine(varResult);

1 个答案:

答案 0 :(得分:0)

NReco.LambdaParser不支持按位AND / OR操作(“ &&” /“ and”均表示布尔AND)。但是,您可以根据需要将helper函数添加到varContext中:

varContext["BitAnd"] = (Func<int, int, int>)((a, b) => v & b);
var varResult = lambdaParser.Eval("BitAnd(numA, 1) == 1 ? true : false", varContext);

甚至

varContext["CheckBit"] = (Func<int, int, bool>)((a, b) => (v & b) == b);
var varResult = lambdaParser.Eval("CheckBit(numA, 1) ? true : false", varContext);

这种方法可让您扩展LambdaParser的表达式中所需的功能。