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也许你想看看动态林克