飞/可爱朋 发表于 2018-2-6 17:06:19

对C#的运算符重载的简易说明

概述:C#中提供了如“+”,“-”,“*”,“/” 等一些对数字的运算,可以使用这些运算符进行一些列的运算。

问题:现在产生了一个问题,我需要对一个类“Class”进行这些数学运算,能使用Class1+Class2的方式产生数学运算的结果吗?如果执行这些运算能达到我预期的结果吗?

解决方案:使用C#中提供的运算符重载,对类Class进行运算的重载,来实现我们的需求

如下代码描述了如何对一个类Class进行“+”运算的重载,最后得到的结果为“False”

1.申明一个“+”运算重载的类
    /// <summary>
    /// 申明计算类
    /// </summary>
    public class NewCalc
    {
      /// <summary>
      /// 属性A
      /// </summary>
      public int? A { get; set; }

      /// <summary>
      /// 属性B
      /// </summary>
      public int? B { get; set; }

      /// <summary>
      /// 重载的“+”运算
      /// </summary>
      /// <param name="arg1">参数1</param>
      /// <param name="arg2">参数2</param>
      /// <returns>计算结果</returns>
      public static bool operator +(NewCalc arg1, NewCalc arg2)
      {
            return arg1.A == null && arg2.A == null ? false : true;
      }
    }

2.类Class的运算重载已经完成,我们来测试一下计算结果
            //用于原算法重载测试
            NewCalc arg = new NewCalc();

            //得到重载运算的结果
            var c = arg + arg;

观察可发现结果C为False,至此,一个简单的运算符重载就实现了,其它的运算符重载是一样的方式,那就交给聪明的你去试一试效果了。


Louis 发表于 2018-2-6 17:09:46

厉害了,我的飞哥,好好琢磨琢磨

剑弑 发表于 2018-2-6 17:10:19

抢沙发{:2_35:} 学习了

ibcadmin 发表于 2018-2-8 10:21:37

厉害了, 我都不知道有这么个东西,活到老学到老
页: [1]
查看完整版本: 对C#的运算符重载的简易说明