时间:2021-05-20
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();
}
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
前言SQLServer开发过程中,为了传入数据集类型的变量(比如接受C#中的DataTable类型变量),需要定义“用户自定义表类型”,通过“用户自定义表类型”
类型转换从根本上说是类型铸造,或者说是把数据从一种类型转换为另一种类型。在C#中,类型铸造有两种形式:隐式类型转换-这些转换是C#默认的以安全方式进行的转换,不
C#对于C++的dll引用时,经常会遇到类型转换和struct的转换1.C++里的Char类型是1个字节,c#里的Char是两个字节,不可以对应使用;可使用c#
本文实例讲述了C#自定义类型强制转换的用法。分享给大家供大家参考。具体分析如下:先来举一个小例子类定义:publicclassMyCurrency{public
本文实例分析了C#中is与as的区别,分享给大家供大家参考。具体分析如下:一、C#类型的转换在c#中类型的转换分两种:显式和隐式,基本的规则如下:1、基类对象转