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

Posted singhwong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了与预定义类型的用户类型强制转换相关的知识,希望对你有一定的参考价值。

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

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

            }
            
        }


    }
}

 

以上是关于与预定义类型的用户类型强制转换的主要内容,如果未能解决你的问题,请参考以下文章

在代码片段中包含类型转换

尝试调用外部 VBA 函数时,只能强制在公共对象模块中定义的用户定义类型

Numpy/Pytorch之数据类型与强制转换

abap 数据类型转换

JS中的“==”与强制类型转换

SQL SERVER中强制类型转换cast和convert的区别