源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

C#用户定义类型转换详解

  • 时间:2020-12-22 05:01 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:C#用户定义类型转换详解
[b]C#用户定义类型转换[/b] •用于自定义类和结构能够进行隐式转换和显示转换.例如:将一个自定义类类型转换成整型,浮点型等,反之亦然. [b]C#提供隐式转换和显式转换[/b] •隐式转换:编译器自动执行转换 •显式转换:编译器只在使用显式转换运算符时才执行转换 声明隐式转换的语法如下.注:所有用户定义转换必须使用public和static修饰符
[u]复制代码[/u] 代码如下:
public static implicit operator TargetType(SourceType Identifier) {        ...       return ObjectOfTargetType; }
TargetType:目标类型 参数Identitfier:源数据 例如,下面代码使一个int字面量被隐式转换为LimitedInt对象,反过来LimitedInt也可以隐式转换成一个int
[u]复制代码[/u] 代码如下:
class LimitedInt     {         const int MaxValue = 100;         const int MinValue = 0;         private int _theValue = 0;         //属性         public int TheValue         {             get { return _theValue; }             set             {                 if (value < MinValue)                 {                     _theValue = 0;                 }                 else                 {                     _theValue = value > MaxValue ? MaxValue : value;                 }             }         }         //隐式转换:将LimitedInt对象转为整型         public static implicit operator int(LimitedInt li)         {             return li.TheValue;         }         //隐式转换:将整型转换为LimitedInt对象         public static implicit operator LimitedInt(int x)         {             LimitedInt li = new LimitedInt();             li.TheValue = x;             return li;         }     }     class Program     {         static void Main(string[] args)         {             LimitedInt li = 500; //将500转换为LimitedInt             int value = li;  //将LimitedInt转换为int             Console.WriteLine("li:{0},value:{1}", li.TheValue, value);             Console.ReadKey();         }
改代码输出结果:li:100,value:100 [b]显示转换和强制转换运算符[/b] 前面所讲的都是隐式转换,如果你把运算符implcit改为explicit,你将不得不在实行转换时显示使用转换运算符 代码片段如下:
[u]复制代码[/u] 代码如下:
//显示转换:将LimitedInt对象转为整型         public static explicit operator int(LimitedInt li)         {             return li.TheValue;         }         //显示转换:将整型转换为LimitedInt对象         public static explicit operator LimitedInt(int x)         {             LimitedInt li = new LimitedInt();             li.TheValue = x;             return li;         }         static void Main(string[] args)         {             LimitedInt li = (LimitedInt)500; //将500强制转换为LimitedInt             int value = (int)li;  //将LimitedInt强制转换为int             Console.WriteLine("li:{0},value:{1}", li.TheValue, value);             Console.ReadKey();         }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部