用户自定义类型的隐式转换

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

ExpandedBlockStart.gif 以米为单位的长度类型定义
     ///   <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);
        }
    }

 

ExpandedBlockStart.gif 以英寸为单位的长度类型定义
     ///   <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);
        }
    }

 

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

 

 

 

 

 

转载于:https://www.cnblogs.com/maozhh/archive/2012/04/12/2444770.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值