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

C# 語法練習 (4):型別轉換完全指南

     編輯:關於C#

C# 型別轉換:隱式、顯式、Convert 類別與溢位檢查

型別轉換是日常開發高頻操作。本文系統整理 Convert 類別方法表、隱式/顯式轉換規則、checked/unchecked 溢位控制與最佳實務。

一、Convert 類別常用轉換方法表

方法目標型別
ToBooleanbool
ToBytebyte
ToCharchar
ToDateTimeDateTime
ToDecimaldecimal
ToDoubledouble
ToInt16short
ToInt32int
ToInt64long
ToSBytesbyte
ToSinglefloat
ToStringstring
ToUInt16ushort
ToUInt32uint
ToUInt64ulong

二、Convert 基本用法範例

using System;

class MyClass
{
    static void Main()
    {
        int num;
        string str;

        num = 99;
        str = Convert.ToString(num);  // 數值轉字串
        Console.WriteLine(str);       // "99"

        str = "123";
        num = Convert.ToInt32(str);   // 字串轉數值
        Console.WriteLine(num);       // 123

        Console.ReadKey();
    }
}

三、隱式轉換

目標型別範圍大於來源型別時,編譯器自動完成,無資料遺失風險。

using System;

class MyClass
{
    static void Main()
    {
        byte n = byte.MaxValue; // 255

        short n1 = n; // 隱式轉換
        int n2 = n;
        long n3 = n;

        Console.WriteLine("{0},{1},{2}", n1, n2, n3); // 255,255,255

        Console.ReadKey();
    }
}

四、顯式轉換(強制轉型)

目標型別範圍較小,可能發生資料截斷或溢位,需開發者明確指示。

using System;

class MyClass
{
    static void Main()
    {
        ulong n = ulong.MaxValue; // 18446744073709551615

        byte n1 = (byte)n;     // 截取低 8 位 -> 255
        ushort n2 = (ushort)n; // 截取低 16 位 -> 65535
        uint n3 = (uint)n;     // 截取低 32 位 -> 4294967295

        Console.WriteLine("{0},{1},{2}", n1, n2, n3);

        Console.ReadKey();
    }
}

五、溢位檢查:checked / unchecked

  • checked:啟用溢位檢查,超出範圍拋出 OverflowException。
  • unchecked:關閉檢查,直接截取位元(預設行為)。
using System;

class MyClass
{
    static void Main()
    {
        int i;
        byte b;

        i = 255;
        b = (byte)i;           // 未超出 byte 範圍,正常
        b = unchecked((byte)i); // 同前,不檢查
        Console.WriteLine(b);   // 255

        i++; // 256
        b = (byte)i;           // 預設 unchecked,截位 -> 0
        b = unchecked((byte)i); // 同前
        Console.WriteLine(b);   // 0

        i = 255;
        b = checked((byte)i);  // 明確檢查,通過
        Console.WriteLine(b);   // 255

        i++; // 256
        try
        {
            b = checked((byte)i); // 觸發 OverflowException
            Console.WriteLine(b);
        }
        catch (OverflowException ex)
        {
            Console.WriteLine("溢位錯誤: " + ex.Message);
        }

        Console.ReadKey();
    }
}

六、最佳實務建議

  1. 優先使用 Convert 類別進行字串與基礎型別互轉,可處理 null 且語意清晰。
  2. 數值型別間隱式轉換安全,顯式轉換需評估資料遺失風險。
  3. 金融、計量等嚴謹領域建議全域或區塊使用 checked 確保資料正確性。
  4. 效能敏感路徑可用 unchecked 避免檢查開銷,但需確定資料範圍安全。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved