马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#技术求助 ASP.NET技术求助

【源码下载】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接外包项目】 面试-葵花宝典下载

官方一群:

官方二群:

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

  [复制链接]
查看4709 | 回复3 | 2018-2-6 17:06:19 | 显示全部楼层 |阅读模式
概述:C#中提供了如“+”,“-”,“*”,“/” 等一些对数字的运算,可以使用这些运算符进行一些列的运算。

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

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

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

1.申明一个“+”运算重载的类
[C#] 纯文本查看 复制代码
    /// <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的运算重载已经完成,我们来测试一下计算结果
[C#] 纯文本查看 复制代码
            //用于原算法重载测试
            NewCalc arg = new NewCalc();

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


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


Louis | 2018-2-6 17:09:46 | 显示全部楼层
厉害了,我的飞哥,好好琢磨琢磨
剑弑 | 2018-2-6 17:10:19 | 显示全部楼层
抢沙发 学习了
ibcadmin | 2018-2-8 10:21:37 | 显示全部楼层
厉害了, 我都不知道有这么个东西,活到老学到老
C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则