2012-12-17 2 views
0

가능한 중복 :
How can I evaluate a C# expression dynamically?동적 수학 함수를 만드는 방법은 무엇입니까?

나는이 작업을 수행 할 수 있습니다;

int x = 6; 
var result = new DataTable().Compute(x + " * 10/3", null); 

그리고이;

public delegate double function(double x); 
function func = delegate(double x) { return x * 10/3; }; 

어떻게 첫 번째 예와 같이 계산하고 두 번째 예와 같이 위임자에게 할당 할 수 있습니까?

목표는 계산 작업을 한 번만 수행 한 다음 여러 변수와 함께 사용하는 것입니다.

+2

의 중복 가능성 [I 동적으로 C#을 식을 계산할 수 있는가? (http://stackoverflow.com/questions/53844/how-can-i-evaluate-ac-sharp-expression-dynamically) 및 [C# 문자열 식을 부울 식으로 변환] (http://stackoverflow.com/questions/5029699/c-sharp-convert-string-expression-to-a-boolean-expression) –

+0

인라인 대리자가 필요하고 클래스 메서드가 아닌가? –

답변

1

이러한 종류의 요구 사항에는 NCalc을 사용합니다. 예를 들어

NCalc.Expression expr = new NCalc.Expression("x * 10/3"); 
expr.EvaluateParameter += (name, args) => 
    { 
     if (name == "x" && somecondition == 1) args.Result = 6; 
     if (name == "x" && somecondition == 2) args.Result = 12; 
    }; 
var result = expr.Evaluate(); 
0

DataTable.Compute을 사용하는 메서드 (익명 또는 아닌)를 만들어야합니다.

Func<double, double> function = x => 
    (double)(new DataTable().Compute(x + " * 10/3", null)); 
관련 문제