C# 将包含条件的小字符串值转换为代码(或动态计算条件的最佳方法)?

C# 将包含条件的小字符串值转换为代码(或动态计算条件的最佳方法)?,c#,C#,我正在尝试验证动态条件。有没有办法做到: string condition = "i == 3"; for (int i = 0; i < 5; i++) { if (condition) { // condition met } } string条件=“i==3”; 对于(int i=0;ii==3; 对于(int i=0;i

我正在尝试验证动态条件。有没有办法做到:

string condition = "i == 3"; 

for (int i = 0; i < 5; i++) 
{ 
    if (condition)
    {
        // condition met
    }
}
string条件=“i==3”;
对于(int i=0;i<5;i++)
{ 
如果(条件)
{
//条件满足
}
}

或者这是错误的方法,并且有更好的方法动态计算条件?

您可以使用这样的委托表达式,但是这不会将字符串转换为表达式。但也许这是一种你应该考虑的方法?

Func<int, bool> condition = i => i == 3;

for (int i = 0; i < 5; i++)
{
    if (condition(i))
    {
        Console.WriteLine(i);
    }
}
Func条件=i=>i==3;
对于(int i=0;i<5;i++)
{
如果(条件(i))
{
控制台写入线(i);
}
}

您要做的就是“评估”。这通常被认为是不好的。可能的引用:,使用Roslyn构建脚本引擎如果可能的条件数量有限且已知,这是完全可以的:-)它与我提到的示例条件(我的错误)配合得很好,但是当条件进一步(I%3==0)时会发生什么?这也可以,事实上,任何可以在
int
上生成
bool
的表达式都可以正常工作。如果您想更进一步,您可以向委托添加更多参数。@SimonKarlsson字符串不适合您在回答中提到的条件。如何才能弥合最后的差距?我错过了什么?@hikizume也许你想看看动态林克