淺析.NET類型轉換的四種方法
.NET類型轉型的四種做法:
◆ 強制轉型:(int)變量名稱
◆ int.Parse(字符串變量名稱)
◆ Convert.To類型(變量名稱)
◆ TryParse
強制轉型 (casting)
◆ 浮點數會做無條件舍去,失去精確度
◆ 可處理 object 轉 int,但遇到 object 為 null 時會產生 error
◆ 某些情況下,如 object 轉型成 int,有時正常,但有時會無故發生 error,原因不明
◆ 無法處理 string 轉 int (程序中常會用到的功能)
◆ 千萬不可用來處理 char 類型,否則傳回的是 ASCII 碼,而不是字面上的數字
int.Parse(字符串變量名稱)
◆ 只能處理 string 轉 int 或其它類型,無法處理 string 以外的類型,功能有限
◆ 遇到 string 為 null 或 string.Empty 時,仍會造成程序 error
◆ 亦可變化使用:「類型.Parse(string)」,但參數只能丟 string
Convert.To類型(變量名稱)
◆ 可處理所有 .NET 的類型、功能完整
◆ 可處理 null,幾乎不會因轉型造成程序 error
◆ 透過「Convert.ToInt32(變量)」轉型成 int 時,變數若為 object 或 string 類型,當其值為 null 時,會傳回 0,不會造成程序 error
◆ 續前一點,若此 string 類型的變量,其原始值為 string.Empty,在轉型成 int 時,仍會造成程序 error
◆ 浮點數會做四舍五入
◆ 千萬不可用來處理 char 類型,否則傳回的是 ASCII 碼,而不是字面上的數字
測試范例:
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;
// 浮點數會做無條件舍去,某些情況會無故產生 error
Response.Write((int)i1 + ", " + (int)i2 + "<br>");
// 只能處理「字符串」轉型成其它類型,功能有限
Response.Write(int.Parse(i1) + ", " + int.Parse(i2) + "<br>");
// 可處理所有類型及 Null,但浮點數會做四舍五入。推薦使用,但不可處理 char 類型
Response.Write(Convert.ToInt32(i1) + ", " + Convert.ToInt32(i2) + "<br>");
}
|
遇到要特別注意數字、金額精確度的項目時,應特別注意。
TryParse
這個方法是 .NET Framework 2.0 版的新功能。將數字的字串表示轉換成它的對等32 位元帶正負號的整數。傳回指示作業是否成功的值。 TryParse 方法與 Parse 方法類似,除了TryParse 方法在轉換失敗時不會擲回例外狀況以外。
【編輯推薦】

























