zoukankan      html  css  js  c++  java
  • 与预定义类型的用户类型强制转换

    与预定义类型的用户类型强制转换

    using System;
    
    namespace 实现用户定义的类型强制转换
    {
        class Program
        {
            static void Main(string[] args)
            {
                //Console.WriteLine("Hello World!");
                //隐式转换
                 //var balance = new Currency(10,50);
                // float f = balance;
                 //System.Console.WriteLine(balance);
                
                // System.Console.WriteLine(f);
                //显示转换
                //下面代码可以成功编译
                // float amount = 50.35f;
                // Currency amount2 = (Currency)amount;
                // System.Console.WriteLine(amount.ToString());
    
                // Currency c = new Currency(50,35);
                // float f = c;
                // c = (Currency)f;
                // System.Console.WriteLine(c);
            }
        }
        public struct Currency{
            public uint Dollars{get;}
            public ushort Cents{get;}
            public Currency(uint dollars,ushort cents){
                Dollars = dollars;
                Cents = cents;
    
            }
            public override string ToString()=>$"${Dollars}.{Cents,-2:00}";
            //定义一个隐式类型强制转换,将类型Currency强制转换为float。
            public static implicit operator float(Currency value)=>value.Dollars+(value.Cents/100f);
            //反之,要将float转换为类型Currency,就需要显式类型强行转换。
            //定义显示强制转换,为了避免数值的丢失,可以使用Convert.ToUInt16(),以及溢出检查。
            public static explicit operator Currency(float value){
                checked{
                    uint dollars = (uint)value;
                ushort cents = Convert.ToUInt16((value - dollars)*100);
                return new Currency(dollars,cents);
    
                }
                
            }
    
    
        }
    }
  • 相关阅读:
    Flutter-仿ios底部彈出框
    Flutter-SingleChildScrollView
    stm32之IIC通信协议
    docker swarm搭建tidb踩坑日记
    剑指offer-机器人的运动范围
    beego跨域请求配置
    SQLAlchemy并发写入引发的思考
    关于docker线上部署时间问题
    设计模式
    leetcode刷题笔记258 各位相加
  • 原文地址:https://www.cnblogs.com/singhwong/p/11931329.html
Copyright © 2011-2022 走看看