類型轉(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(); } } }
當(dāng)上面的代碼被編譯和執(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(); } } }
當(dāng)上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結(jié)果:
75 53.005 2345.7652 True