共用方式為


使用轉換運算子 (C# 程式設計手冊)

您可以使用比較容易上手的 implicit 轉換運算子,或者用可以向任何人清楚表達你所轉換的程式碼的 explicit 轉換運算子。 這個主題示範轉換運算子的兩個型別。

注意事項注意事項

如需簡單型別轉換子的資訊,請參閱 如何:將字串轉換為數值 (C# 程式設計手冊)如何:將位元組陣列轉換成整數 (C# 程式設計手冊)如何:在十六進位字串和數字類型間轉換 (C# 程式設計手冊)Convert

範例

下面示範如何使用明確轉換運算子。 此運算子會從 Byte 型別轉換至名為 Digit 的數值型別。 因為並非所有的位元都可以轉換成數字,所以轉換是明確的,意思就是必須使用轉型 (Cast),如 Main 方法中所示。

struct Digit
{
    byte value;

    public Digit(byte value)  //constructor
    {
        if (value > 9)
        {
            throw new System.ArgumentException();
        }
        this.value = value;
    }

    public static explicit operator Digit(byte b)  // explicit byte to digit conversion operator
    {
        Digit d = new Digit(b);  // explicit conversion

        System.Console.WriteLine("Conversion occurred.");
        return d;
    }
}

class TestExplicitConversion
{
    static void Main()
    {
        try
        {
            byte b = 3;
            Digit d = (Digit)b;  // explicit conversion
        }
        catch (System.Exception e)
        {
            System.Console.WriteLine("{0} Exception caught.", e);
        }
    }
}
// Output: Conversion occurred.

此範例示範隱含轉換運算子,方法為定義會復原先前範例所執行作業的轉換運算子:它會從名為 Digit 的數值類別轉換成整數 Byte 型別。 因為任何數字都可轉換成 Byte,所以不需要強制使用者明確轉換。

struct Digit
{
    byte value;

    public Digit(byte value)  //constructor
    {
        if (value > 9)
        {
            throw new System.ArgumentException();
        }
        this.value = value;
    }

    public static implicit operator byte(Digit d)  // implicit digit to byte conversion operator
    {
        System.Console.WriteLine("conversion occurred");
        return d.value;  // implicit conversion
    }
}

class TestImplicitConversion
{
    static void Main()
    {
        Digit d = new Digit(3);
        byte b = d;  // implicit conversion -- no cast needed
    }
}
// Output: Conversion occurred.

請參閱

參考

轉換運算子 (C# 程式設計手冊)

is (C# 參考)

概念

C# 程式設計手冊

其他資源

C# 參考