Blog
home > blog > Realizzare un Eval in .net

Tag: Programmazione, .Net

Realizzare un Eval in .net

Vediamo come implementare una funzione di Eval come quella del Javascript per valutare espressioni aritmetiche in .net. È molto facile.
di Maurizio Ceravolo
In tanti mi chiedono come implementare una funzione di Eval come quella di Javascript da usare nei loro progetti in .net. Eval è una funzione molto potente che accetta come unico parametro una stringa. Quella stringa può essere una qualsiasi espressione in javascript che può essere valutata ed eseguita. Questo vuol dire che io in quella stringa potrei scrivere anche un programma in javascript e tramite la eval eseguirla.

Facciamo un esempio per chiarire le idee. Per lanciare un avviso all'utente in javascript, si può usare la funzione alert che crea un piccolo popup con un messaggio. Lo posso scrivere in questo modo:

alert('messaggio per gli utenti')

oppure lo posso anche scrivere in questo modo

var codice = "alert('messaggio per gli utenti')";
eval(codice);

il risultato delle due porzioni di codice è esattamente identico. La seconda ha il vantaggio che il contenuto della variabile codice potrebbe provenire da un database o dall'input dell'utente (ovviamente facendo sempre attenzione alle problematiche di sicurezza, per evitare che sulle nostre pagine venga eseguito codice non autorizzato).

Allo stesso modo posso usare eval per eseguire espressioni matematiche e quindi potrei scrivere qualcosa del genere

var codice = "2+5*(2+4)";
var risultato = eval(codice);
alert(risultato);

Anche in questo caso la variabile codice potrebbe provenire da un input dell'utente, e quindi queste righe di codice permettono di creare un risolutore di espressioni aritmetiche.

Ed è appunto quello che mi stanno chiedendo in tanti in questi giorni a proposito del .net.

In .net non esiste una metodo equivalente all'eval di javascript, però ce lo possiamo costruire. In questo post vedremo come fare un eval aritmetico. Per realizzare un eval che possa eseguire qualsiasi porzione di codice rimandiamo ad un post futuro, in quanto è meno semplice del realizzare un eval aritmetico.

In .net, abbiamo sulla classe DataTable, che normalmente viene usata per memorizzare dati proveniente da un database, un metodo che prende il nome di Compute che permette di effettuare dei conteggi e delle operazioni sui dati contenuti nell'oggetto.

Quello che possiamo fare è usare questo metodo, non propriamente per quello che è stato usato. Ovvero invece di fargli fare operazioni sui dati nel DataTable, gli faremo fare operazioni senza alcun riferimento ai dati, ottenendo un valutatore di espressioni aritmetiche. E quindi possiamo scrivere in questo modo (lo scriverò usando il Visual Basic.net per semplicità, ma può essere facilmente convertito in C#):

Dim Espressione as String ="4+5*(2+6)/3"
Dim TabellaDiAppoggio as new DataTable()
Dim Risultato as Decimal = TabellaDiAppoggio.Compute(Espressione)

Come vedete è molto facile.

Happy coding. :-)
Post correlati
2011
19
Aprile
Cambiare l'indirizzo del proprio sito senza penalizzare il pagerank
Maurizio Ceravolo
Quando si decide di spostare il proprio sito ad un altro indirizzo occorre fare alcune operazioni per non perdere il pagerank guadagnato con tanto lavoro.
2010
13
Ottobre
Inviare fax da una applicazione usando .net
Maurizio Ceravolo
Descrizione di due opzioni per mandare fax attraverso una proprio applicazione: collegandosi ad un servizio esterno o usando WinFax in interoperabilità
2010
17
Novembre
Vb.net, creare una data in formato W3C per una sitemap
Maurizio Ceravolo
Per creare una sitemap.xml occorre inserire le date nel formato definito dal W3C, che non è nativo in .net. Vediamo un modo semplice per generarle.
2011
20
Giugno
Facebook rilascia l'SDK c#
Maurizio Ceravolo
Facebook ha appena rilasciato l'SDK ufficiale per sviluppare applicazioni che si interfacciano con Facebook utilizzando il c#.
2010
24
Novembre
UrlRewrite e Postback: il problema sull'action del form in asp.net
Maurizio Ceravolo
Sperimentando l'UrlRewrite in un sito .net ci si scontra con un errore sui postback. Vediamo come risolverlo


Archivio Mensile Blog
Tag Cloud
Apple bug Facebook fisica geek Google Google+ humor IBM innovazione Microsoft Motori di ricerca nerd ricerca SEO social network social plugin video videogiochi viral
Ultimi Post
I migliori di oggi
I più popolari del mese
Top post