Compartilhar via


Usando operadores de conversão (guia de programação translation from VPE for Csharp)

Os operadores de conversão podem ser explicit ou implicit. Os operadores de conversão implícita são mais fáceis de usar, mas operadores explícitas são úteis quando você deseja que os usuários do operador estar ciente de que uma conversão está ocorrendo.Este tópico demonstra os dois tipos.

Exemplo

Este é um exemplo de um operador de conversão explícita.Este operador converte do tipo de Byte para um tipo de valor chamado Digit. sistema autônomo nem todos sistema autônomo bytes podem ser convertidos para um dígito, a conversão é explícita, que significa que uma conversão deve ser usada, sistema autônomo mostra a Main método.

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, definindo um operador de conversão desfaz o que fez o exemplo anterior: Converte de uma classe de valor chamada Digit para a integral Byte Digite. Porque qualquer dígito pode ser convertido para um Byte, não é necessário forçar usuários a ser explícitos 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

Conceitos

Guia de Programação C#

Referência

Operadores de conversão (guia de programação translation from VPE for Csharp)

Outros recursos

Referência C#