En C# est-il une fonction eval?
Je suis taper une équation dans un textbox
qui permettra de générer le graphe de la parabole. Est-il possible d'utiliser une fonction eval? Mon C# 2010 n'ont pas microsoft.jscript
.
OriginalL'auteur clay turner | 2011-05-19
Vous devez vous connecter pour publier un commentaire.
C# n'est pas comparable à une fonction Eval, mais la création d'un seul est vraiment facile:
Maintenant, il suffit de l'appeler comme ceci:
Si vous utilisez ce pour tracer le graphique, une variation sur ce qui peut être utilisé pour générer les valeurs de la fonction. Avoir une colonne dans la Table de données appelé "x", et de mettre votre expression pour f(x) dans la colonne autre?
Notez que ce n'évalue très simple des expressions mathématiques. Et pour de meilleures performances, vous pouvez garder le datatable à l'extérieur de la fonction.
typeof(string)
C'est certainement difficile. N'aurais pas pensé à ça.
OriginalL'auteur Teoman Soygul
Vous pouvez facilement le faire avec le "Calcul" de la méthode de la classe DataTable.
Passer d'un terme de la forme d'une chaîne, à la fonction, afin d'obtenir le résultat.
using System.Data
doivent être inclus et une référence d'assembly doit être ajouté pourSystem.Data
.OriginalL'auteur mar.k
Vous pouvez en créer un vous-même en utilisant CodeDom. Il sera lente, car elle crée une nouvelle assemblée de chaque fois que vous appelez Eval.
OriginalL'auteur Raz Megrelidze
Il est possible d'utiliser le Système.De la réflexion.Émettre ou d'un Système.CodeDom espaces de noms, mais ce n'est pas exactement une bonne idée car il n'y a pas de mécanisme de contrôle de ce que les espaces de noms sont et ne sont pas autorisés à être utilisés. Vous écrivez un eval() attend des expressions simples, et la prochaine chose que vous savez qu'un utilisateur est un procès à vous parce que votre code permis d'entrer une chaîne de caractères qui a détruit leur disque dur.
eval()
-comme les fonctions sont énormes béants trous de sécurité et doit être évitée.La solution privilégiée dans le .Net est un DSL (domain specific language). Si vous avez autour de google, vous pouvez trouver quelques pré-créé DSL pour les tâches courantes telles que l'arithmétique.
Joel, il sera utilisé par moi seul, juste pour le faire. le trou de sécurité ne sera pas un problème. comment pourrais-je aller sur le faire?
OriginalL'auteur Joel Coehoorn
Il n'y a pas de code C# fonction eval; mais comme d'autres l'ont dit précédemment, il existe plusieurs solutions pour ce que vous essayez de faire.
Si vous êtes intéressés à évaluer plus compliqué de code C#, mon C# eval programme prévoit l'évaluation de code C# au moment de l'exécution et prend en charge de nombreux C# consolidés. En fait, ce code n'est utilisable qu'à l'intérieur de tout .Un projet de réseau, cependant, elle est limitée à l'aide de la syntaxe C#. Jetez un oeil à mon site web, http://csharp-eval.com, pour plus de détails.
OriginalL'auteur xnaterm