淺析.NET類型轉(zhuǎn)換的四種方法
.NET類型轉(zhuǎn)型的四種做法:
◆ 強(qiáng)制轉(zhuǎn)型:(int)變量名稱
◆ int.Parse(字符串變量名稱)
◆ Convert.To類型(變量名稱)
◆ TryParse
強(qiáng)制轉(zhuǎn)型 (casting)
◆ 浮點(diǎn)數(shù)會(huì)做無(wú)條件舍去,失去精確度
◆ 可處理 object 轉(zhuǎn) int,但遇到 object 為 null 時(shí)會(huì)產(chǎn)生 error
◆ 某些情況下,如 object 轉(zhuǎn)型成 int,有時(shí)正常,但有時(shí)會(huì)無(wú)故發(fā)生 error,原因不明
◆ 無(wú)法處理 string 轉(zhuǎn) int (程序中常會(huì)用到的功能)
◆ 千萬(wàn)不可用來(lái)處理 char 類型,否則傳回的是 ASCII 碼,而不是字面上的數(shù)字
int.Parse(字符串變量名稱)
◆ 只能處理 string 轉(zhuǎn) int 或其它類型,無(wú)法處理 string 以外的類型,功能有限
◆ 遇到 string 為 null 或 string.Empty 時(shí),仍會(huì)造成程序 error
◆ 亦可變化使用:「類型.Parse(string)」,但參數(shù)只能丟 string
Convert.To類型(變量名稱)
◆ 可處理所有 .NET 的類型、功能完整
◆ 可處理 null,幾乎不會(huì)因轉(zhuǎn)型造成程序 error
◆ 透過(guò)「Convert.ToInt32(變量)」轉(zhuǎn)型成 int 時(shí),變數(shù)若為 object 或 string 類型,當(dāng)其值為 null 時(shí),會(huì)傳回 0,不會(huì)造成程序 error
◆ 續(xù)前一點(diǎn),若此 string 類型的變量,其原始值為 string.Empty,在轉(zhuǎn)型成 int 時(shí),仍會(huì)造成程序 error
◆ 浮點(diǎn)數(shù)會(huì)做四舍五入
◆ 千萬(wàn)不可用來(lái)處理 char 類型,否則傳回的是 ASCII 碼,而不是字面上的數(shù)字
測(cè)試范例:
protected void Page_Load(object sender, EventArgs e) { char i1 = '0'; char i2 = '9'; string i1 = null; string i2 = "9"; string i3 = string.Empty; int i1 = 0; int i2 = 9; double i1 = 1.2345; double i2 = 1.5678; object i1 = null; object i2 = 9; // 浮點(diǎn)數(shù)會(huì)做無(wú)條件舍去,某些情況會(huì)無(wú)故產(chǎn)生 error Response.Write((int)i1 + ", " + (int)i2 + "<br>"); // 只能處理「字符串」轉(zhuǎn)型成其它類型,功能有限 Response.Write(int.Parse(i1) + ", " + int.Parse(i2) + "<br>"); // 可處理所有類型及 Null,但浮點(diǎn)數(shù)會(huì)做四舍五入。推薦使用,但不可處理 char 類型 Response.Write(Convert.ToInt32(i1) + ", " + Convert.ToInt32(i2) + "<br>"); } |
遇到要特別注意數(shù)字、金額精確度的項(xiàng)目時(shí),應(yīng)特別注意。
TryParse
這個(gè)方法是 .NET Framework 2.0 版的新功能。將數(shù)字的字串表示轉(zhuǎn)換成它的對(duì)等32 位元帶正負(fù)號(hào)的整數(shù)。傳回指示作業(yè)是否成功的值。 TryParse 方法與 Parse 方法類似,除了TryParse 方法在轉(zhuǎn)換失敗時(shí)不會(huì)擲回例外狀況以外。
【編輯推薦】