類型轉(zhuǎn)換從根本上說是類型鑄造,或者說是把數(shù)據(jù)從一種類型轉(zhuǎn)換為另一種類型。在 C# 中,類型鑄造有兩種形式:
隱式類型轉(zhuǎn)換 - 這些轉(zhuǎn)換是 C# 默認的以安全方式進行的轉(zhuǎn)換, 不會導(dǎo)致數(shù)據(jù)丟失。例如,從小的整數(shù)類型轉(zhuǎn)換為大的整數(shù)類型,從派生類轉(zhuǎn)換為基類。
顯式類型轉(zhuǎn)換 - 顯式類型轉(zhuǎn)換,即強制類型轉(zhuǎn)換。顯式轉(zhuǎn)換需要強制轉(zhuǎn)換運算符,而且強制轉(zhuǎn)換會造成數(shù)據(jù)丟失。
下面的示例顯示了一個顯式的類型轉(zhuǎn)換:
namespace TypeConversionApplication
{
class ExplicitConversion
{
static void Main(string[] args)
{
double d = 5673.74;
int i;
// 強制轉(zhuǎn)換 double 為 int
i = (int)d;
Console.WriteLine(i);
Console.ReadKey();
}
}
}當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結(jié)果:
5673
C# 提供了下列內(nèi)置的類型轉(zhuǎn)換方法:
| 序號 | 方法 & 描述 |
|---|---|
| 1 | ToBoolean 如果可能的話,把類型轉(zhuǎn)換為布爾型。 |
| 2 | ToByte 把類型轉(zhuǎn)換為字節(jié)類型。 |
| 3 | ToChar 如果可能的話,把類型轉(zhuǎn)換為單個 Unicode 字符類型。 |
| 4 | ToDateTime 把類型(整數(shù)或字符串類型)轉(zhuǎn)換為 日期-時間 結(jié)構(gòu)。 |
| 5 | ToDecimal 把浮點型或整數(shù)類型轉(zhuǎn)換為十進制類型。 |
| 6 | ToDouble 把類型轉(zhuǎn)換為雙精度浮點型。 |
| 7 | ToInt16 把類型轉(zhuǎn)換為 16 位整數(shù)類型。 |
| 8 | ToInt32 把類型轉(zhuǎn)換為 32 位整數(shù)類型。 |
| 9 | ToInt64 把類型轉(zhuǎn)換為 64 位整數(shù)類型。 |
| 10 | ToSbyte 把類型轉(zhuǎn)換為有符號字節(jié)類型。 |
| 11 | ToSingle 把類型轉(zhuǎn)換為小浮點數(shù)類型。 |
| 12 | ToString 把類型轉(zhuǎn)換為字符串類型。 |
| 13 | ToType 把類型轉(zhuǎn)換為指定類型。 |
| 14 | ToUInt16 把類型轉(zhuǎn)換為 16 位無符號整數(shù)類型。 |
| 15 | ToUInt32 把類型轉(zhuǎn)換為 32 位無符號整數(shù)類型。 |
| 16 | ToUInt64 把類型轉(zhuǎn)換為 64 位無符號整數(shù)類型。 |
下面的示例把不同值的類型轉(zhuǎn)換為字符串類型:
namespace TypeConversionApplication
{
class StringConversion
{
static void Main(string[] args)
{
int i = 75;
float f = 53.005f;
double d = 2345.7652;
bool b = true;
Console.WriteLine(i.ToString());
Console.WriteLine(f.ToString());
Console.WriteLine(d.ToString());
Console.WriteLine(b.ToString());
Console.ReadKey();
}
}
}當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結(jié)果:
75 53.005 2345.7652 True