2014-02-28 2 views
1
나는이 작업을 수행 할 필요가

....문자열에 저장된 표현식을 평가하는 방법은 무엇입니까?

dim mVar as String = "" 
dim mVar1 as double 
dim mVar2 as double 

mvar= " mVar1> mVar2 " 

if mvar Then 
. 
. 
. 
End IF 

는 vb.net에서 지원인가?

그렇다면 어떻게됩니까?

mvar에는 필자의 요구 사항과 다른 조건이 있습니다.

+0

가 가지 방법이 있습니다,하지만 그들은 매우 성가신입니다. 이 끈은 어디에서 오는거야? –

+0

문자열이 내 코드에서오고 있으며 코드에 따라 다른 값을 갖습니다. – user3194012

+0

그래서 사용자가 제공하지 않습니다. 어떤 이유에서든'Func (Of Double, Double, Boolean)'이 될 수 없습니까? (또는 단지'Func (Of Boolean)') –

답변

1

String 대신에 Delegate을 사용할 수 있습니다.

예 :

Dim var1 As Double = 14.03 
Dim var2 As Double = 13.99 

Dim biggerThan = Function(a As Double, b As Double) a > b 
Dim areEqual = Function(a As Double, b As Double) a = b 

If biggerThan(var1, var2) Then 
    Console.WriteLine("var1 > var2") 
Else If areEqual(var1, var2) Then 
    Console.WriteLine("var1 = var2") 
End If 

var1 = 13.99 

If biggerThan(var1, var2) Then 
    Console.WriteLine("var1 > var2") 
Else If areEqual(var1, var2) Then 
    Console.WriteLine("var1 = var2") 
End If 

출력 :


당신이 정말로 원하는 또는 문자열을 사용해야하는 경우

var1 > var2 
var1 = var2 
에서, Flee 도서관에서보세요.

예 :

Dim context = New ExpressionContext() 
context.Variables("var1") = 14.03 
context.Variables("var2") = 13.99 

Dim result = context.CompileGeneric(Of Boolean)("var1 > var2").Evaluate() 
Console.WriteLine(result) 

출력 :

True 
관련 문제