這些天寫BS的代碼的時候經常用到C#,對C#數據類型這塊做了簡單的總結。本文講解了C#的隱式轉換,顯示轉換,parse,Tostring,Convert的轉換。
隱式轉換
當對簡單的值類型進行轉換時,如果是按照 Byte,short,int,long,float,double從左到右(從短到長)進行轉換的時候,可以直接進行轉換(隱式轉換),不用做任何說明。簡單的代碼示例:
[csharp]
static void Main(string[] args)
{
int a = 10;
long b = a;
Console.Write("b的值為:"+b);
Console.ReadKey();
}
顯示轉換
依然是對值類型進行轉換時,從長字節轉換成短字節,直接轉換的話,編譯器會提示“無法將類型 *轉換為類型*,存在一個顯示轉換”,這時需要進行強制轉換(顯示轉換)。簡單的代碼示例:
[csharp]
static void Main(string[] args)
{
long a = 10;
int b = (int)a;
Console.Write("b的值為:"+b);
Console.ReadKey();
}
每種數據類型都存在自身的范圍,例如byte類型的范圍是0~255,int型的范圍是0~65535,當int型轉換成byte類型時,如果超出了自身的范圍時會怎麼處理呢?看下代碼示例:
[csharp]
staticvoid Main(string[] args)
{
int a = 256;
byte b = (byte)a;
Console.Write("b的值為:"+b);
Console.ReadKey();
}
這段代碼的運行結果 “b的值為0”,如果把a的值改為257,則b的值為1。結果是怎麼來的,編譯器會把256轉換成對應的二進制,也就是100000000,當轉換成byte類型時(8位二進制數),會長出8位的部分截掉,因此結果變成了0。
toString()轉換
當把值類型轉換成字符串類型時,可以直接調用值類型的方法toString()進行轉換,另外toString還可以將結果轉換成相應的進制形式,簡單的代碼示例:
[csharp]
<span style="font-size:18px;">staticvoid Main(string[] args)
{
//轉換為對應的字符串類型
int a = 256;
string b =a.ToString();
Console.Write("b的值為:"+b);
Console.ReadKey();
}
static void Main(string[] args)
{
//轉換為十六進制形式(X可以換為小寫,代表對應的a-f的大小寫)
int a = 256;
string b =a.ToString("X");
//輸出結果為“b的值為100”
Console.Write("b的值為:"+b);
Console.ReadKey();
}</span>
parse方法
像int、long、float類型都有parse方法,可以將字符串轉換為對應的數據類型,簡單的代碼實例:
[csharp]
<span style="font-size:18px;">staticvoid Main(string[] args)
{
int a = 256;
string b ="256";
if (int.Parse(b) ==a)
{
Console.Write("a和b的值相等!");
Console.ReadKey();
}
}</span>
Convert類
Convert有很多的轉換數據類型的方法,它將繼承自Object類型的對象轉換為制定的類型,即Convert.toInt32()(還有對應其他類型的轉換)。另外的一種方法:Convert.ChangeType(Object,Type),這種方法在涉及到泛型時會顯現出優勢。