您的位置:首页 > 编程语言 > C#

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

2014-11-06 11:46 375 查看
 // 定义一个人民币结构。数据类型转换的语法对于结构和类是一样的

    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);

        }

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: