C#數據類型的轉化
C#數據類型的轉化
簡述:類型轉換從根本上說是類型鑄造,或者說是把數據從一種類型轉換為另一種類型。在 C# 中,類型鑄造有兩種形式隱式類型轉換與顯式類型轉換
一、隱式類型轉換
隱式類型轉換 --- C# 默認的以安全方式進行的轉換, 不會導致數據丟失。例如,從小的整數類型轉換為大的整數類型,從派生類轉換為基類。
二、顯式類型轉換
顯式類型轉換 --- 即強制類型轉換。顯式轉換需要強制轉換運算符,而且強制轉換會造成數據丟失。
namespace TypeConversionApplication { class ExplicitConversion { static void Main(string[] args) { double d = 5673.74; int i; // 強制轉換 double 為 int i = (int)d; Console.WriteLine(i); Console.ReadKey(); } } }
三、C#中方法類型轉換
3.1、C#內置後綴式類型轉換
備註:上述內置類型轉化函數除了ToString方法最常用外,其它基本在開發中都不怎麽使用,如需使用都用的是covert中的轉化方法。
3.2、Convert方法與xxx.Parse方法
Convert方法 | 功能描述 |
---|---|
Convert.ToInt32() | 轉換為整型(int) |
Convert.ToChar() | 轉換為字符型(char) |
Convert.ToString() | 轉換為字符串型(string) |
Convert.ToDateTime() | 轉換為日期型(datetime) |
Convert.ToDouble() | 轉換為雙精度浮點型(double) |
Conert.ToSingle() | 轉換為單精度浮點型(float) |
Parse方法 | 功能描述 |
---|---|
int.Parse(string類型變量名) | 轉換為整型(int) |
int.TryParsestring s, out int result | 轉換為整型(int) |
Int32.Parse | 轉換為整型(int) |
Double.Parse() | 轉換為雙精度浮點型(double) |
3.2.1、Convert 與 Parse 區別
實際開發項目的過程中,我們碰到需要被轉換的類型大概有3大類,分別是空值(NULL)、數字類型(包含float,double,int,long等)和字符串(string)這3類。以下以Convert.ToInt32()、int.Parse() 、int.TryParse()為例介紹三者之間的區別。
1、int.Parse(string類型變量名) 該方式是將數字內容的字符串轉為int類型
1、參數必須為字符串型,如果字符串內容不是數字或不是整形,則拋出FormatException異常;
2、如果字符串內容為空或者null時,則拋出ArgumentNullException異常;
3、如果字符串內容所表示數字超出int類型可表示的範圍,則拋出OverflowException異常
4、使用該方法切忌的一點就是只能處理字符串內容,而且字符串內容只能在int類型可表示的範圍之內
2、int.TryParse(string s, out int result) 該方式也是將數字內容的字符串轉為int類型
1、該方式比int.Parse優越的地方,就是它不會出現異常。如果轉換成功返回 true,如果轉換失敗返回 false。很明顯,最後一個參數為輸出值,如果轉換失敗,輸出值為 0;如果轉換成功,則輸出相應的值。
//例如:1.將字符串“12345”轉換成數值數據12345,實現如下:
bool=ryParse("12345",int result);
bool=true;
result=12345; //成功
3、Convert.ToInt32()
1、該方式不僅可以將字符串轉為int類型,還可以將其它類型的值轉成int類型。變量若為object或string類型,當其值為null時,會傳回0,不會造成程序錯誤。
2、該方式對於浮點數會做四舍五入。
3、該方式同強制轉換一樣,不能用來處理char類型,否則傳回的是ASCII代碼。
Convert.ToInt32("12345"); //將字符串“12345”轉換成數值數據12345
Convert.ToInt32(3.14); //將小數型“3.14”轉換成整數型數據 !!!!int.Parse("4.5") 異常
Convert.ToInt32(‘true‘); //將字符型‘true‘轉換成布爾型數據
3.3、 int與string轉化
- int轉string
int a = 15;
string s1 = a.ToString();
string s2 = Convert.ToString(a);
存在問題:這兩種轉換方法有何差別?
1、ToString()函數能用來完成數值型數據向字符串類型的轉換
2、Convert.ToString()則是強制轉換,無論數據是什麽樣類型的都可以通過使用這個方法將其轉換成字符串類型的。
3、Tostring也可來完成字符向字符串類型的轉換,大體上兩者的功能是相同的。
4、tosring()方法不接受空的參數,否則編譯報錯。Convert.tostring方法支持空對象。
- string轉int
string s = "18";
int a1 = int.Parse(s);
int a2; int.TryParse(s, out a2);
int a3 = Convert.ToInt32(s);
- 總結
1、Convert對int與string進行來回轉化,並且可以指定轉化的進制
2、int轉化為string,可以使用ToString方法或 Convert.ToString()
3、String轉化為int,可以使用int.Parse或者int.TryParse方法。
備註:為什麽沒有string.Parse和string.TryParse方法?不需要,ToString就可以了。
C#數據類型的轉化