字符串计算组件

关于程序:
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;
 }
}

源码: https://share.weiyun.com/5148Dwp.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值