博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自定义转换
阅读量:6305 次
发布时间:2019-06-22

本文共 1634 字,大约阅读时间需要 5 分钟。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
/*使用explicit(显式)和implicit(隐式)*/
namespace 自定义转换
{
    class LimitedInt
    {
        const int MaxValue = 100;
        const int MinValue = 0;
        private int _TheValue = 0;
        public int TheValue
        {
            get { return _TheValue; }
            set
            {
                if (value < MinValue)
                    _TheValue = 0;
                else
                    _TheValue = value > MaxValue ? MaxValue : value;
            }
        }
        //隐式转换,自定义的LimitedInt类型转换为int类型
        public static implicit operator int(LimitedInt li)
        {
            return li.TheValue;
        }
        //隐式转换,int类型转换为自定义的LimitedInt类型
        public static implicit operator LimitedInt(int x)
        {
            LimitedInt li = new LimitedInt();
            li.TheValue = x;
            return li;
        }
        //重载运算符取负值-
        public static LimitedInt operator -(LimitedInt x)
        {
            LimitedInt li = new LimitedInt();
            li.TheValue = 0; 
            return li;
        }
        //重载运算符做减法x-y
        public static LimitedInt operator -(LimitedInt x, LimitedInt y)
        {
            LimitedInt li = new LimitedInt();
            li.TheValue = x.TheValue - y.TheValue;
            return li;
        }
        //重载运算符做加法x+y
        public static LimitedInt operator +(LimitedInt x, LimitedInt y)
        {
            LimitedInt li = new LimitedInt();
            li.TheValue = x.TheValue + y.TheValue;
            return li;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            LimitedInt li = 5;//将5转换为limitedInt
            int Five = li;//将LimitedInt转换为int
            Console.WriteLine("li:{0},Five:{1}",li.TheValue,Five);
            LimitedInt li1 = 8;
            LimitedInt li2 = 10;
     
            Console.WriteLine("li:{0},Five:{1}", li.TheValue, Five);
            LimitedInt li3 =li1+li2;
            Console.WriteLine("li2+li1={0}", li3.TheValue);
            li3=li2-li1;
            Console.WriteLine("li2-li1={0}",li3.TheValue);
            li3 = -li1;
            Console.WriteLine("-li1={0}",li3.TheValue);
            Console.ReadKey();
        }
    }
}

转载于:https://www.cnblogs.com/sulong/p/4794022.html

你可能感兴趣的文章
iOS8 Push Notifications
查看>>
各大名企笔试及面经大全(程序猿必读)
查看>>
Oracle 连接、会话数的查看,修改
查看>>
Python使用QRCode模块生成二维码
查看>>
英语学习的重要性
查看>>
Android中Handler引起的内存泄露
查看>>
原产地政策,jsonp跨域
查看>>
HDU 1143 Tri Tiling(递归)
查看>>
ffmpeg参数具体解释
查看>>
记一次公司仓库数据库服务器死锁过程
查看>>
Oracle 11g password过期被锁定报道 ORA-28000 the account is locked
查看>>
【Struts2学习笔记(2)】Action默认值和配置Action于result各种转发类型
查看>>
轨磁条简介
查看>>
(算法)交错的字符串
查看>>
hdu 5471(状压DP or 容斥)
查看>>
oracle.jdbc.driver.OracleDriver和oracle.jdbc.OracleDriver这两个驱动的区别
查看>>
NSQ部署
查看>>
git常用命令记录
查看>>
IBM发布新一代云计算工具包MobileFirst Foundation
查看>>
唯品会HDFS性能挑战和优化实践
查看>>