C#中操作符,显示和隐式转换

 // 定义一个人民币结构。数据类型转换的语法对于结构和类是一样的

    public struct RMB
    {

        // 注意:这些数的范围可能不能满足实际中的使用

        public uint Yuan;

        public uint Jiao;

        public uint Fen;

        public RMB(uint yuan, uint jiao, uint fen)
        {
            if (fen > 9)
            {
                jiao += fen / 10;
                fen = fen % 10;
            }
            if (jiao > 9)
            {
                yuan += jiao / 10;
                jiao = jiao % 10;
            }
            this.Yuan = yuan;
            this.Jiao = jiao;
            this.Fen = fen;
        }
        public override string ToString()
        {
            return string.Format("¥{0}元{1}角{2}分", Yuan, Jiao, Fen);
        }

        // 一些操作

        //r1 = new RMB(1, 6, 13);
        // 其实当时其他人都已经交过了,他们总共交了:
        // r2 = new RMB(46, 9, 3);
        // 那么加上我的就是:
        // r3 = r1 + r2;

        public static RMB operator +(RMB rmb1, RMB rmb2)
        {
            return new RMB(rmb1.Yuan + rmb2.Yuan, rmb1.Jiao + rmb2.Jiao, rmb1.Fen + rmb2.Fen);

        }

        // 隐式转换
         //float f = r3;

        public static implicit operator float(RMB rmb)
        {
            return rmb.Yuan + (rmb.Jiao / 10.0f) + (rmb.Fen / 100.00f);

       }

// 显式转换

//(RMB)f

        public static explicit operator RMB(float f)
        {
            uint yuan = (uint)f;
            uint jiao = (uint)((f - yuan) * 10);
            uint fen = (uint)(((f - yuan) * 100) % 10);
            return new RMB(yuan, jiao, fen);
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值