HOWTO · Csharp

在 C# 中依輸入類型將值轉換為 int

依輸入類型選擇 C# 整數轉換方式:數值使用 (int) 轉型,整數文字使用 int.Parse(),其他受支援的值使用 Convert.ToInt32()。

本頁內容

在 C# 中,請依輸入內容選擇合適的轉換方式:數值使用 (int) 轉型,代表整數的文字使用 int.Parse(),需要轉換的其他受支援值則使用 Convert.ToInt32()。這些方法對小數、null,以及無法轉換的輸入有不同處理方式。

使用 (int) 轉型將數值轉換為 int

如果值原本就是數值型別,直接使用數值轉型即可。轉型運算式 會轉換數值,不會解析文字。將浮點數或 decimal 轉換為 int 時,小數部分會朝零截斷:42.9 會變成 42,而 -42.9 會變成 -42。此範例會轉換一個數值並印出結果。

using System;

class Program
{
    static void Main()
    {
        double value = 42.9;
        int result = (int)value;
        Console.WriteLine(result);
    }
}
42

此轉型適用於相容的數值型別,不會解析像 "42" 這樣的字串。浮點數超出 int 範圍時,未檢查的轉換結果未指定;在 checked 內容中,超出範圍的轉換會引發 OverflowException。若要在溢位時收到錯誤,可使用 checked((int)value),或在轉換前先確認數值範圍。另請參閱 Microsoft 的轉型與型別轉換指南。

使用 int.Parse() 解析整數字串

當輸入是包含整數的字串時,例如從表單或設定檔讀取的文字,請使用 int.Parse()。文字符合可接受的整數格式時,方法會傳回 int。此範例會解析字串並印出結果。

using System;

class Program
{
    static void Main()
    {
        string text = "42";
        int result = int.Parse(text);
        Console.WriteLine(result);
    }
}
42

int.Parse() 只會解析字串,不會轉換任意文字或數值物件。字串為 null 時會引發 ArgumentNullException;文字不是有效整數時會引發 FormatException;數值超出 int 範圍時則會引發 OverflowException。若使用者輸入可能無效,請改用 int.TryParse() 並處理其布林結果,避免解析失敗中斷操作。預設解析規則會使用目前文化特性;若文字來自格式已知的來源,請指定明確的文化特性。

使用 Convert.ToInt32() 將受支援的值轉換為 int

當輸入可能是受支援的基本值,例如整數、布林值、浮點數、decimal 或字串時,Convert.ToInt32() 就很實用。它不會轉換所有型別;可轉換的型別取決於可用的多載和 IConvertible 實作。輸入為字串時,它會解析整數文字;輸入為浮點數或 decimal 時,則會使用「中點取偶數」規則四捨五入至最接近的整數,這與 (int) 的截斷行為不同。

using System;

class Program
{
    static void Main()
    {
        double value = 42.5;
        int result = Convert.ToInt32(value);
        Console.WriteLine(result);
    }
}
42

在這個中點值上,依中點取偶數規則會得到 42;43.5 則會得到 44。參考為 null 時,Convert.ToInt32() 會傳回 0;不受支援的轉換、格式錯誤的字串,以及超出 int 範圍的值都可能引發例外。請在轉換規則符合輸入時使用此方法;若輸入明確是整數文字,請用 int.Parse();若數值應截斷,則使用轉型。