在計算機中,所有的數據都是以0和1的形式存在的,變量的含義是通過數據的這種解釋方式來傳達的。在實際應用中很多地方要用到不同數據類型之間的轉換,請看下面的一個例子
string str = null;
double num=null;
Console.WriteLine("enter a serial of numbers:\t");
str = Console.ReadLine();//讀取一行數字
num = Convert.ToDouble(str);//字符串轉換成數字
類型轉換包括有兩種方法:
隱式轉換和顯式轉換,下面將分別介紹這兩種方法。
一. 隱式轉換
隱式轉換不要做任何工作,不要編寫其他的代碼,可以直接轉換。
請看:
ushort num1;
char ch='a';
num1 = ch;
num1 = 98;
ch = num1;// (1)
錯誤:法將類型“ushort”隱式轉換為“char”。存在一個顯式轉換(是否缺少強制轉換?)
如果將上面的(1)處的代碼改為:ch = (char)num1;那麼編譯的時候就沒有錯誤,這種方法就是顯式轉換。其結果如下:
ushort num1;
char ch='a';
num1 = ch;//直接轉換
num1 = 98;
ch = (char)num1;//間接轉換,num1的前面多了個char.
從上圖可以看出隱式和顯式轉換的一些區別了。
二、顯式轉換
顯式轉換有個很明顯的標識,在要轉換的數據之前有個標識符,例如:
ch = (char)num1。當然顯式轉換不止只有這個方法,還可以用Convert方法來處理數據的轉換。
先看下幾個例子,再對照後面給出的兩個表格的來驗證。本文發表於編程入門網:www.bianceng.cn
int age = 22;
double myage = (double)age; //顯式轉換
Console.WriteLine("int age={0}", age);
Console.WriteLine("double myage={0}", myage);
float price = 55.55F;
decimal cupon = Convert.ToDecimal(price); //
使用Convert方法來處理。
Console.WriteLine("float price={0}", price);
Console.WriteLine("decimal cupon={0}", cupon);
下面的兩個表格在變量的轉換過程中國比較重要,特別是Convert的各種方法
表1:左邊類型可以無錯誤的直接成功轉換為右邊的類型
類型
編譯器隱式執行的轉換
byte
short,ushort,int,uint,long,ulong,float,double,decimal
sbyte
short,int,long,float,double,decimal
short
int,long,float,double.decimal
ushort
int,uint,float,ufloat,double,decimal
int
long,float,double,decimal
uint
float,double,decimal,
long
float,double,decimal
ulong
float,double,decimal
float
double
char
ushort,int,uint,long,ulong,float,double,decimal
這些轉換與兩種數據的長度相關,這個表不需要記住,在實際編程過程中如果有什麼錯誤,系統編譯器會自動提醒。
表2:類Convert的常用方法:類型1 var1=Convert.method(var2);
Convert.ToBoolean();
Convert.ToInt64()
Convert.ToByte();
Convert.ToSByte();
Convert.ToChar();
Convert.ToString();
Convert.ToDecimal()
Convert.ToSingle();
Convert.ToDouble()
Convert.ToUInt16();
Convert.ToDateTime()
Convert.ToUInt32();
Convert.ToDouble();
Convert.ToUInt64();
Convert.ToInt16();
Convert.ToInt32()
以上16個方法中只有幾個在實際編程過程中用到很多,特別是Convert.ToString();Convert.ToChar();
Convert.ToDateTime()這幾個使用頻率很高,大家要自己編程體會,下一節將會介紹C#中常用的3種復雜類型變量:結構體,數組和枚舉類型。