Ich tippe eine Gleichung in eine textbox
, die den Graph der gegebenen Parabel erzeugt. Ist es möglich, eine Evaluierungsfunktion zu verwenden? Mein C # 2010 hat nicht microsoft.jscript
.
C # hat keine vergleichbare Eval-Funktion, aber die Erstellung einer solchen ist wirklich einfach:
%Vor%Nennen Sie es einfach so:
%Vor%Sie können selbst eine mit CodeDom erstellen. Es wird langsam sein, da es bei jedem Aufruf von Eval eine neue Assembly erstellt.
%Vor% Es ist möglich, die Namespaces System.Reflection.Emit oder System.CodeDom zu verwenden, aber das ist nicht gerade eine gute Idee, da es keinen Mechanismus gibt, um zu steuern, welche Namespaces verwendet werden und nicht verwendet werden dürfen. Sie schreiben ein eval (), das einfache Ausdrücke erwartet, und das nächste, was Sie wissen, ist ein Benutzer, der Sie verklagt, weil Ihr Code ihnen erlaubt hat, eine Zeichenkette einzugeben, die ihre Festplatte löschte. eval()
-ähnliche Funktionen sind riesige klaffende Sicherheitslücken und sollten vermieden werden.
Die bevorzugte Alternative in der .NET-Welt ist eine DSL (domänenspezifische Sprache) . Wenn Sie googeln, können Sie einige vordefinierte DSLs für allgemeine Aufgaben wie zum Beispiel Arithmetik finden.
Es gibt keine native C # -Evalfunktion. Aber wie andere bereits gesagt haben, gibt es mehrere Problemumgehungen für das, was Sie versuchen zu tun.
Wenn Sie an der Auswertung komplizierterer C # -Codes interessiert sind, bietet mein C # -EVAL-Programm die Möglichkeit, C # -Code zur Laufzeit auszuwerten und viele C # -Anweisungen zu unterstützen. Tatsächlich ist dieser Code in jedem .NET-Projekt verwendbar, ist jedoch auf die Verwendung von C # -Syntax beschränkt. Weitere Informationen finden Sie auf meiner Website Ссылка .