C#用户定义类型转换详解_C#教程-查字典教程网
C#用户定义类型转换详解
C#用户定义类型转换详解
发布时间:2016-12-28 来源:查字典编辑
摘要:C#用户定义类型转换•用于自定义类和结构能够进行隐式转换和显示转换.例如:将一个自定义类类型转换成整型,浮点型等,反之亦然.C#...

C#用户定义类型转换

•用于自定义类和结构能够进行隐式转换和显示转换.例如:将一个自定义类类型转换成整型,浮点型等,反之亦然.

C#提供隐式转换和显式转换

•隐式转换:编译器自动执行转换

•显式转换:编译器只在使用显式转换运算符时才执行转换

声明隐式转换的语法如下.注:所有用户定义转换必须使用public和static修饰符

复制代码 代码如下:

public static implicit operator TargetType(SourceType Identifier)

{

...

return ObjectOfTargetType;

}

TargetType:目标类型

参数Identitfier:源数据

例如,下面代码使一个int字面量被隐式转换为LimitedInt对象,反过来LimitedInt也可以隐式转换成一个int

复制代码 代码如下:

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

显示转换和强制转换运算符

前面所讲的都是隐式转换,如果你把运算符implcit改为explicit,你将不得不在实行转换时显示使用转换运算符

代码片段如下:

复制代码 代码如下:

//显示转换:将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();

}

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新C#教程学习
    热门C#教程学习
    编程开发子分类