zoukankan      html  css  js  c++  java
  • 用户自定义类型的隐式转换

    在做设计类的软件中,有时候会遇到米和英寸的转化,这里自己写的这两种类型的隐式转换方法。

    以米为单位的长度类型定义
        /// <summary>
        
    /// 以米为单位的长度
        
    /// </summary>
        public class MeterLength
        {
            public float Value { getset; }
            public UnitType Unit { get { return UnitType.Meter; } }

            public MeterLength(InchLength value)
            {
                Value = (float)(value.Value * 0.3048);
            }
            public MeterLength(float value)
            {
                Value = value;
            }
            public override string ToString()
            {
                return Value.ToString(CultureInfo.InvariantCulture) + " " + Unit;
            }
            /// <summary>
            
    /// 米隐式转换为英寸
            
    /// </summary>
            
    /// <param name="value"></param>
            
    /// <returns></returns>
            public static implicit operator InchLength(MeterLength value)
            {
                return new InchLength(value);
            }
        }

     

    以英寸为单位的长度类型定义
        /// <summary>
        
    /// 以英寸为单位的长度
        
    /// </summary>
        public class InchLength
        {
            public float Value { getset; }
            public UnitType Unit { get { return UnitType.Meter; } }

            public InchLength(float value)
            {
                Value = value;
            }
            public InchLength(MeterLength value)
            {
                Value = (float)(value.Value / 0.3048);
            }
            public override string ToString()
            {
                return Value.ToString(CultureInfo.InvariantCulture) + " " + Unit;
            }
            /// <summary>
            
    /// 英寸隐式转换为米
            
    /// </summary>
            
    /// <param name="value"></param>
            
    /// <returns></returns>
            public static implicit operator MeterLength(InchLength value)
            {
                return new MeterLength(value);
            }
        }
    长度单位类型定义
        public class UnitType
        {
            /// <summary>
            
    /// 长度单位类型:米
            
    /// </summary>
            public static readonly UnitType Meter = new UnitType() { Name = "Meter" };
            /// <summary>
            
    /// 长度单位类型:英寸
            
    /// </summary>
            public static readonly UnitType Inch = new UnitType() { Name = "Inch" };

            private UnitType() { }
            public string Name { getprivate set; }
            /// <summary>
            
    /// 国际化文本显示
            
    /// </summary>
            public string Text
            {
                get
                {
                    //国际化的key
                    string key = this.GetType().ToString() + "." + Name;
                    //此处应根据key返回相应的国际化之后的文本,目前在没有国际化处理的情况下暂时返回Name
                    return Name;
                }
            }
            public override string ToString()
            {
                return Text;
            }
        }
                InchLength length = new MeterLength(1);
                MessageBox.Show(length.ToString());

     本文章的目的是告诉大伙,除了float a=(float)0.111233;之外,还可以对用户定义的不同类型进行转化。

  • 相关阅读:
    Nginx配置图片请求
    Nginx 配置浏览Linux 系统目录并下载文件
    SpringBoot + Dubbo + Zookper 整合
    mysql 随机选取一条符合条件的记录
    linux 安装rabbitMQ详细教程
    spring boot 实现redis 的key的过期监听,执行自己的业务
    springboot 配置将info、error、debug 分别输出到不同文件
    使用 mvn install 命令将本地jar包注册到本地maven仓库
    关于Snowflake 生成53位ID
    spring boot 或 spring 集成 atomikos jta 完成多数据源事务管理
  • 原文地址:https://www.cnblogs.com/maozhh/p/2444770.html
Copyright © 2011-2022 走看看