2011-08-25 5 views
0

J'écris un jeu de mathématiques très simple. Ce que je voudrais être en mesure de faire est la suivante:Utilisation de la variable comme symboles vb.net

Dim symbol as String 

Private Sub Math() 
    symbol = "+" 
    1 symbol 1 = 2 

    symbol = "-" 
    1 symbol 1 = 0 
end sub 

Je sais que cela ne fonctionnera pas, mais il est l'idée que je veux, merci d'avance.

+1

attente .... 1-1 = 1? De toute façon, je pense que vous devriez clarifier ce que vous voulez faire * avec * ceci; il se peut qu'un 'Func 'soit suffisant; c'est-à-dire 'Func op = (x, y) => x + y; var sum = op (2,3); // 5' (évidemment c'est C#, mais peut être traduit en VB) –

+0

duplicata possible de [Faire des maths dans vb.net comme Eval en javascript] (http://stackoverflow.com/questions/1452282/doing-math- in-vb-net-like-eval-in-javascript) –

Répondre

1

Comme Marc Gravell déjà mentionné, vous pouvez utiliser une expression lambda. Voici comment cela fonctionne en VB:

Private Sub Calculate(f As Func(Of Double, Double, Double)) 
    Dim a As Double = 1.5, b As Double = 3.14 
    Console.WriteLine(f(a,b)); 
End Sub 

Ensuite, vous appelleraient Calculer comme ceci:

Calculate(Function(x,y) x+y) 
Calculate(Function(x,y) x-y) 
Calculate(Function(x,y) x*y) 
1

Go avec le cas ou cas d'autre interrupteur, utilisez les symboles réels dans la condition, quelque chose comme

if symbol == "+": 
return a+b; 

if symbol == "-": 
return a-b; 
+0

Oui, merci. Je comprends de cette façon. Mais je dois le faire dans peu de quantité possible de code. Y a-t-il un moyen plus court de le faire? – Kuzon

+0

Il n'existe pas de méthode générique pour mapper une chaîne de symboles mathématiques à ce qu'elle représente. Pour le rendre plus court pour votre cas, vous pouvez utiliser l'opérateur ternaire comme résultat Dim comme Integer = If (symbole = "+", a + b, a-b) –

Questions connexes