Udostępnij za pośrednictwem


Używanie operatorów konwersji (Przewodnik programowania w języku C#)

Można użyć operatorów konwersji implicit, które są łatwiejsze w użyciu, lub operatorów konwersji explicit, które jasno wskazują konwersję typu każdej osobie czytającej kod.W tym temacie przedstawiono oba rodzaje operatorów konwersji.

[!UWAGA]

Aby uzyskać informacji dotyczące konwersji typu prostego, zobacz Porady: konwertowanie ciągu na liczbę (Przewodnik programowania w języku C#), Porady: konwertowanie tablicy typu Byte na liczbę całkowitą (Przewodnik programowania w języku C#), Porady: konwertowanie ciągów szestnastkowych na typy liczbowe (Przewodnik programowania w języku C#) lub Convert.

Przykład

To jest przykład operatora konwersji jawnej.Ten operator konwertuje z typu Byte do typu wartości o nazwie Digit.Ponieważ nie wszystkie bajty mogą być konwertowane na cyfry, konwersja jest jawna; oznacza to że musi być stosowane rzutowanie, jak pokazano w metodzie 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.

W tym przykładzie pokazano operator niejawnej konwersji, definiując operator konwersji, który cofa czynność z poprzedniego przykładu: konwertuje wartość klasy o nazwie Digit do zintegrowanego typu Byte.Ponieważ dowolna cyfra może być konwertowana na Byte, nie trzeba zmuszać użytkowników do jawnej konwersji.

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.

Zobacz też

Informacje

Operatory konwersji (Przewodnik programowania w języku C#)

is (odwołanie w C#)

Koncepcje

Przewodnik programowania w języku C#

Inne zasoby

Odwołanie w C#