總體來看,C#數(shù)據(jù)類型的轉(zhuǎn)換包括隱式轉(zhuǎn)換和顯示轉(zhuǎn)換兩種。隱式轉(zhuǎn)換,即不同數(shù)據(jù)類型之間能自動完成的轉(zhuǎn)換,無須人為干預(yù),一般情況是由低精度的數(shù)據(jù)類型向高精度的數(shù)據(jù)類型轉(zhuǎn)換。顯示轉(zhuǎn)換,即強制轉(zhuǎn)換,必須人為地用一定方法完成的轉(zhuǎn)換。我們先看看C#中的隱式轉(zhuǎn)換。
1、隱式轉(zhuǎn)換
我們用一個例子來說明一下:
using System;
class Class1
{
static void Main(string[] args)
{
sbyte b1 = 23;
short c = b1;
int i = c;
long l = i;
decimal d = l;
Console.WriteLine("b1={0},c={1},i={2},l={3},d={4}/n",b1,c,i,l,d);
float f = 12.34453f;
double db = f;
Console.WriteLine("f={0},db={1}/n",f,db);
byte b2 = 234;
ushort us = b2;
uint ui = us;
ulong ul = ui;
float f1 = ul;
Console.WriteLine("b2={0},us={1},ui={2},ul={3},f1={4}/n",b2,us,ui,ul,f1);
char ch = 'a';
ushort uh = ch;
Console.WriteLine("ch={0},uh={1}/n",ch,uh);
long ll = 12345678;
float dd = ll;
Console.WriteLine("ll={0},dd={1}",ll,dd);
}
}
其運行結(jié)果如下圖所示:

從運行結(jié)果來看,sbyte能夠向short,short能向int,int 能向long,long能向decimal自動轉(zhuǎn)換;byte能向ushort,ushort能向uint,uint能向ulong,ulong能向float,float能向decimal進行自動轉(zhuǎn)換。char能向ushort自動轉(zhuǎn)換。根據(jù)這一點,我們可以畫出C#數(shù)據(jù)類型的自動轉(zhuǎn)換路線圖,如下:

雖然,能夠進行自動轉(zhuǎn)換,但也存在著表示的數(shù)據(jù)不一致的情況,我們從上面的運行結(jié)果可以看出long型向float型轉(zhuǎn)換時,以及float向double轉(zhuǎn)換后,數(shù)據(jù)不太一致。
2、顯示轉(zhuǎn)換
顯示轉(zhuǎn)換的格式為:
(數(shù)據(jù)類型)變量;
下面我們用一個例子來說明:
using System;
namespace Explicit
{
class Class1
{
static void Main(string[] args)
{
int i = 2000;
short sh = (short)i;
Console.WriteLine("i={0},sh={1}",i,sh);
long ll = 200000;
short sr = (short)ll;
Console.WriteLine("ll={0},sr={1}",ll,sr);
int j = 65000;
short s= (short)j;
Console.WriteLine("j={0},s={1}",j,s);
double d = 9994657234.2345;
float f = (float)d;
Console.WriteLine("d={0},f={1}",d,f);
Console.WriteLine("注意下面的運算:");
short num1 = 20000,num2=23000;
short num3 = (short)(num1 + num2);
Console.WriteLine("num1={0},num2={1},num3=num1 + num2={2}",num1,num2,num3);
}
}
}
運行結(jié)果如下圖:

從運行結(jié)果可以看出,對于強制轉(zhuǎn)換,往往容易造成數(shù)據(jù)的丟失和溢出,從對兩個short型的變量num1和num2求和可以看出,即使同一數(shù)據(jù)類型的也可能造成數(shù)據(jù)結(jié)果的溢出,這一點要注意。另外,由于整型數(shù)據(jù)默認(rèn)為int型的,對于num1+num2算完的結(jié)果也要進行強制轉(zhuǎn)換為short型的。
數(shù)據(jù)類型的轉(zhuǎn)換還有其他方法,我們將在以后進行介紹,敬請關(guān)注。
新聞熱點
疑難解答