首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 資料類型轉換完整指南:三種核心方法詳解

     編輯:關於C語言

前言

在 C# 開發中,類型安全是核心特性之一。不同於 Visual Basic 的寬鬆類型系統,C# 要求嚴格的類型匹配。當從文字方塊等 UI 控件獲取輸入並參與運算時,必須將字串轉換為對應的數值類型。本文系統整理 C# 中三種最常用的類型轉換方法,並附上實戰程式碼範例。

方法一:強制類型轉換

適用於相容類型之間的轉換(如數值類型擴大/縮小、繼承關係的物件轉換)。語法為 (目標類型)運算式。

private void TestCast()
{
    string input = "1.4532";
    double result;
    
    // 錯誤示範:字串無法直接強制轉為 double
    // result = (double)input; // 編譯錯誤
    
    // 正確做法:需先透過 Parse 或 Convert 轉換
    result = Math.Cos(double.Parse(input));
}

注意:強制轉換僅限於編譯器能確認的相容類型,字串與數值類型不相容,不可直接使用。

方法二:Parse / TryParse 方法

所有基本數值類型(int、double、decimal 等)與 DateTime、Guid 等結構都提供靜態 Parse 方法,將字串解析為該類型實例。建議搭配 TryParse 避免例外拋出。

private void CalculateAzimuth()
{
    // 從 UI 取得輸入
    string alpha = txtAzimuth.Text; // 格式如 "120.3045" 代表 120度30分45秒
    string[] parts = alpha.Split('.');
    
    double degrees = double.Parse(parts[0]);
    double minutes = double.Parse(parts[1].Substring(0, 2));
    double seconds = double.Parse(parts[1].Substring(2, 2));
    
    // 轉換為弧度
    double radian = (degrees + minutes / 60.0 + seconds / 3600.0) * Math.PI / 180.0;
    
    // 後續計算...
    double distance = double.Parse(txtDistance.Text);
    double startX = double.Parse(txtStartX.Text);
    double startY = double.Parse(txtStartY.Text);
    
    double endX = Math.Cos(radian) * distance + startX;
    double endY = Math.Sin(radian) * distance + startY;
    
    txtEndX.Text = endX.ToString();
    txtEndY.Text = endY.ToString();
}

最佳實務:實際專案請改用 double.TryParse 並處理失敗情況,避免格式錯誤導致程式中斷。

方法三:Convert 類別

System.Convert 提供靜態方法支援更廣泛的類型轉換,包括處理 null(回傳預設值 0)與進制轉換。內部實際仍呼叫對應類型的 Parse 或 ToString。

private void ConvertExample()
{
    string[] parts = txtAzimuth.Text.Split('.');
    
    // Convert.ToDouble 可直接處理 null,回傳 0.0
    double degrees = Convert.ToDouble(parts[0]);
    double minutes = Convert.ToDouble(parts[1].Substring(0, 2));
    double seconds = Convert.ToDouble(parts[1].Substring(2, 2));
    
    // 其他數值類型同理
    int count = Convert.ToInt32(txtCount.Text);
    decimal price = Convert.ToDecimal(txtPrice.Text);
    DateTime dt = Convert.ToDateTime(txtDate.Text);
}

三種方法比較表

特性強制轉換Parse / TryParseConvert 類別
適用場景相容數值類型、繼承關係物件字串 → 數值/日期/結構任意類型 → 基本類型、進制轉換
null 處理拋出 NullReferenceException拋出 ArgumentNullException回傳目標類型預設值(如 0)
失敗行為編譯期/執行期錯誤Parse 擲例外;TryParse 回傳 false擲 FormatException 或 OverflowException
效能最快(直接指令)快略慢(內部多層呼叫)
建議用法已知型別相容時解析使用者輸入(優先 TryParse)資料庫欄位、物件屬性等可能為 null 的來源

總結

  • 數值運算前:務必將字串輸入透過 TryParse 驗證並轉換。
  • 資料庫/物件屬性:使用 Convert 安全處理潛在 null。
  • 已知相容型別:直接使用強制轉換(如 int → double、子類別 → 父類別)。

掌握這三種轉換方式的差異與適用時機,能讓 C# 程式碼更健壯、可維護性更高。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved