有很多算法可以計(jì)算表達(dá)式,例如:通過(guò)遞歸下降調(diào)車場(chǎng)算法波蘭語(yǔ)反符號(hào)是否可以使用C#.net反射或其他現(xiàn)代.net技術(shù)評(píng)估任何數(shù)學(xué)表達(dá)式?
3 回答

jeck貓
TA貢獻(xiàn)1909條經(jīng)驗(yàn) 獲得超7個(gè)贊
盡管使用編譯器服務(wù)是一種簡(jiǎn)單而有效的解決方案,但是如果用戶輸入該表達(dá)式,則會(huì)引起嚴(yán)重的安全問(wèn)題,因?yàn)樗鼘?shí)際上可以執(zhí)行任何操作。
還有另一個(gè)非常簡(jiǎn)單的解決方案,它更安全:利用JScript Eval函數(shù)。您只需要按照以下步驟操作:
創(chuàng)建一個(gè)名為JsMath.js的js文件:
class JsMath
{
static function Eval(expression : String) : double
{
return eval(expression);
};
}
編譯成一個(gè)類庫(kù):
jsc /t:library JsMath.js
在您的C#項(xiàng)目中引用JsMath庫(kù),并像這樣使用它:
double result = JsMath.Eval(expression);
- 3 回答
- 0 關(guān)注
- 458 瀏覽
添加回答
舉報(bào)
0/150
提交
取消