关于程序:
1.用于字符串计算
2.双精度double
3.自定义公式
4.库类-c#
5.vs2019开发
总结:
1.感觉写起来黏糊糊的不容易拓展,是不是写成继承的模式会好一点。
2.了解反射机制,ArralyList的用法。
3.感觉反射就是为了灵活函数方法调用准备的。
4.命名规范千奇百怪,重新整理命名方式。
Evaluator A = new Evaluator();
A.AddEnvironmentFunctions(new MathFunctions());
//string resultX2 = A.Parse("2*3").ToString();//right
//string resultX2 = A.Parse("Abs-30)").ToString();//right 30
//string resultX2 = A.Parse("Abs(-30/2)").ToString();//right 15
//string resultX2 = A.Parse("Abs((3-10/2))").ToString();//right 2
//string resultX2 = A.Parse("Abs((3-10/2))*2").ToString();//right 4
//string resultX2 = A.Parse("Abs(Abs(1))+)").ToString();//right 4
//string resultX2 = A.Parse("Abs(Abs((3-10/2))*2)+2").ToString();//right 6
//string resultX2 = A.Parse("2-Abs(Abs((3-10/2))*2)+2").ToString();//right 0
//string resultX2 = A.Parse("2-Abs(Abs((3-10/2))*2)+2-5").ToString();//right -5
//string resultX2 = (A.Parse("2-Abs(-20+Abs((3-10/3)*2)+2)-5").ToString());//正确
//string resultX2 = (A.Parse("2").ToString());//正确
//string resultX2 = (A.Parse("Abs(asdfsdfsadfle)rwlql").ToString());//正确
//string resultX2 = (A.Parse("Abs(asdfsdfsadflerwlql)").ToString());//正确
//string resultX2 = (A.Parse("Abs(11))+1").ToString());//正确
//string resultX2 = (A.Parse("Abs((11)+1").ToString());//正确
//string resultX2 = (A.Parse("'ddd((11)+1'").ToString());//正确
//string resultX2 = (A.Parse("'Abs((11)sdf+1'"));//正确
//string resultX2 = (A.Parse("Abs((11)+1/0"));//正确
//string resultX2 = (A.Parse("Abs(11)+1-"));//正确
//string resultX2 = (A.Parse("Abs(11-)+1"));//正确
//string resultX2 = (A.Parse("Abs(11)-4%3"));//正确
//string resultX2 = (A.Parse("20+(1+5)"));//right
//string resultX2 = (A.Parse("Abs(-6)+2-(2+1)"));//right
//string resultX2 = A.Parse("(1+5)").ToString();//right
//string resultX2 = A.Parse(" ( 1 + 5 )").ToString();//right
//string resultX2 = A.Parse(" 2 - Abs ( Abs ( ( 3 - 10 / 2 ) ) * 2 ) + 2 - 5 ").ToString();//right
//string resultX2 = A.Parse("2 - ( Abs ( 3 - 10 / 2 ) * 2 ) + 2 - 5").ToString();//right
//string resultX2 = A.Parse("Abs(9)+3*4").ToString();//right
//string resultX2 = A.Parse("Ax(9,8,Abs(Ax(10,5,7)))+3*4").ToString();//right
//string resultX2 = A.Parse("Ax(9,8,Abs(-10))+3*4").ToString();//39
//string resultX2 = A.Parse("Ax(9,8,-10)+3*4").ToString();//19
string resultX2 = A.Parse("Ax(9,8,-10)+3*4").ToString();//19
//string resultX2 = A.Parse("Ax(9,8+1,-10)+3*4").ToString();//right
//string resultX2 = A.Parse("Ax(9,(8+Abs (-10)), Abs(Ax( -10,-10,-10)))+3*4").ToString();//right 69
//string resultX2 = A.Parse("( 45 * 7 / 9)+3 * 4").ToString();//47
//string resultX2 = A.Parse("(ag(45*7/9)+3 * 4").ToString();
this.Text = resultX2;
//自定义公式写法,值(double)
public class MathFunctions
{
public static double Asin (double v)
{
return Math.Asin(v);
}
public static double Abs(double v)
{
return Math.Abs(v);
}
public static double Ax(double v, double v1, double v2)
{
return v+v1+v2;
}
}