C#用戶定義類型轉(zhuǎn)換
•用于自定義類和結(jié)構(gòu)能夠進(jìn)行隱式轉(zhuǎn)換和顯示轉(zhuǎn)換.例如:將一個(gè)自定義類類型轉(zhuǎn)換成整型,浮點(diǎn)型等,反之亦然.
C#提供隱式轉(zhuǎn)換和顯式轉(zhuǎn)換
•隱式轉(zhuǎn)換:編譯器自動(dòng)執(zhí)行轉(zhuǎn)換
•顯式轉(zhuǎn)換:編譯器只在使用顯式轉(zhuǎn)換運(yùn)算符時(shí)才執(zhí)行轉(zhuǎn)換
聲明隱式轉(zhuǎn)換的語(yǔ)法如下.注:所有用戶定義轉(zhuǎn)換必須使用public和static修飾符
參數(shù)Identitfier:源數(shù)據(jù)
例如,下面代碼使一個(gè)int字面量被隱式轉(zhuǎn)換為L(zhǎng)imitedInt對(duì)象,反過(guò)來(lái)LimitedInt也可以隱式轉(zhuǎn)換成一個(gè)int
private int _theValue = 0;
//屬性
public int TheValue
{
get { return _theValue; }
set
{
if (value < MinValue)
{
_theValue = 0;
}
else
{
_theValue = value > MaxValue ? MaxValue : value;
}
}
}
//隱式轉(zhuǎn)換:將LimitedInt對(duì)象轉(zhuǎn)為整型
public static implicit operator int(LimitedInt li)
{
return li.TheValue;
}
//隱式轉(zhuǎn)換:將整型轉(zhuǎn)換為L(zhǎng)imitedInt對(duì)象
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轉(zhuǎn)換為L(zhǎng)imitedInt
int value = li; //將LimitedInt轉(zhuǎn)換為int
Console.WriteLine("li:{0},value:{1}", li.TheValue, value);
Console.ReadKey();
}
顯示轉(zhuǎn)換和強(qiáng)制轉(zhuǎn)換運(yùn)算符
前面所講的都是隱式轉(zhuǎn)換,如果你把運(yùn)算符implcit改為explicit,你將不得不在實(shí)行轉(zhuǎn)換時(shí)顯示使用轉(zhuǎn)換運(yùn)算符
代碼片段如下:
//顯示轉(zhuǎn)換:將整型轉(zhuǎn)換為L(zhǎng)imitedInt對(duì)象
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強(qiáng)制轉(zhuǎn)換為L(zhǎng)imitedInt
int value = (int)li; //將LimitedInt強(qiáng)制轉(zhuǎn)換為int
Console.WriteLine("li:{0},value:{1}", li.TheValue, value);
Console.ReadKey();
}
新聞熱點(diǎn)
疑難解答
圖片精選