Compartilhar via


Usando operadores de conversão (Guia de Programação em C#)

Você pode usar os operadores de conversão de implicit , que são mais fácil de usar, ou os operadores de conversão de explicit , que indicam claramente a qualquer um que lê o código que você está convertendo um tipo. Este tópico demonstra ambos os tipos de operador de conversão.

Exemplo

Este é um exemplo de um operador de conversão explícita. Este operador converte-se de tipo Byte a um tipo de valor chamado Digit. Porque nem todos os bytes podem ser convertidos em um dígito, a conversão explícita é, o que significa que uma conversão deve ser usada, conforme mostrado no método de 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.

Este exemplo demonstra um operador de conversão implícita definir um operador de conversão que desfça o que o exemplo anterior fez: converte-se de uma classe de valor Digit chamada para o tipo integral de Byte . Porque qualquer dígito puder ser convertido em Byte, não há necessidade de forçar usuários para estar explícito sobre a conversão.

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.

Consulte também

Referência

Operadores de conversão (Guia de Programação em C#)

is (Referência de C#)

Conceitos

Guia de Programação em C#

Outros recursos

Referência de C#