如果条件C#返回变量值

时间:2015-10-29 05:09:07

标签: c#

enter image description here

我想在if条件中使用此变量值 if(20> 13&& 20< 18).....

2 个答案:

答案 0 :(得分:1)

有两种方式(很多方式,但我更喜欢这些)。

缓慢的方式:(非常慢)使用CodeDom在运行时编译字符串。样品:

using System.CodeDom.Compiler;
using Microsoft.CSharp;

//...

private static void Main()
{
    string Tempreture = "20 > 13 && 20 < 18";
    bool? result = Evaluate(Tempreture);
    if (!result.HasValue)
    {
        throw new ApplicationException("invalid expression.");
    }
    else if (result.Value)
    {
        //...
    }
    else
    {
        //...
    }
}

public static bool Evaluate(string condition)
{
    // code to compile.
    const string conditionCode = "namespace Condition {{public class Program{{public static bool Main(){{ return {0};}}}}}}";

    // compile code.
    var cr = new CSharpCodeProvider().CompileAssemblyFromSource(
        new CompilerParameters { GenerateInMemory = true }, string.Format(conditionCode, condition));

     if (cr.Errors.HasErrors) return null;

    // get the method and invoke.
    var method = cr.CompiledAssembly.GetType("Condition.Program").GetMethod("Main");
    return (bool)method.Invoke(null, null);
}

快捷方式:使用Ncalc库动态解析表达式。

using NCalc;

// ...

string Tempreture = "20 > 13 && 20 < 18";
NCalc.Expression e = new Expression(Tempreture);
if (e.HasErrors())
{
    throw new ApplicationException("invalid expression");
}
if ((bool)e.Evaluate())
{
    //...
}
else
{
    //...
}

答案 1 :(得分:0)

我假设x = 20

然后你可以这样做:

if(x > 13 && x <18)