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;之外,还可以对用户定义的不同类型进行转化。

  • 相关阅读:
    Windows7防火墙服务无法启用怎么办
    asp.net实现md5加密方法详解
    php去除换行(回车换行)的方法
    MySQL函数大全
    php codebase生成随机数
    Tensorflow 的Word2vec demo解析
    深度学习课程部分资料整理
    稀疏矩阵表示
    Faster-rnnlm代码分析3
    Faster-rnnlm代码分析2
  • 原文地址:https://www.cnblogs.com/maozhh/p/2444770.html
Copyright © 2011-2022 走看看