implicit (Referência de C#)implicit (C# Reference)

A palavra-chave implicit é usada para declarar um operador de conversão implícita de tipo definido pelo usuário.The implicit keyword is used to declare an implicit user-defined type conversion operator. Use-a para habilitar conversões implícitas entre um tipo definido pelo usuário e outro tipo, se houver garantia de que a conversão não causará perda de dados.Use it to enable implicit conversions between a user-defined type and another type, if the conversion is guaranteed not to cause a loss of data.

ExemploExample

class Digit
{
    public Digit(double d) { val = d; }
    public double val;
    // ...other members

    // User-defined conversion from Digit to double
    public static implicit operator double(Digit d)
    {
        return d.val;
    }
    //  User-defined conversion from double to Digit
    public static implicit operator Digit(double d)
    {
        return new Digit(d);
    }
}

class Program
{
    static void Main(string[] args)
    {
        Digit dig = new Digit(7);
        //This call invokes the implicit "double" operator
        double num = dig;
        //This call invokes the implicit "Digit" operator
        Digit dig2 = 12;
        Console.WriteLine("num = {0} dig2 = {1}", num, dig2.val);
        Console.ReadLine();
    }
}

Com a eliminação de conversões desnecessárias, as conversões implícitas podem melhorar a legibilidade do código-fonte.By eliminating unnecessary casts, implicit conversions can improve source code readability. No entanto, como as conversões implícitas não exigem que os programadores convertam explicitamente de um tipo para outro, é necessário ter cuidado para evitar resultados inesperados.However, because implicit conversions do not require programmers to explicitly cast from one type to the other, care must be taken to prevent unexpected results. De modo geral, operadores de conversão implícita nunca devem gerar exceções e perder informações, para que possam ser usados com segurança sem conhecimento do programador.In general, implicit conversion operators should never throw exceptions and never lose information so that they can be used safely without the programmer's awareness. Se um operador de conversão não puder atender a esses critérios, ele deve ser marcado como explicit.If a conversion operator cannot meet those criteria, it should be marked explicit. Para obter mais informações, consulte Usando Operadores de Conversão.For more information, see Using Conversion Operators.

Especificação da linguagem C#C# language specification

Para obter mais informações, consulte a Especificação da linguagem C#.For more information, see the C# Language Specification. A especificação da linguagem é a fonte definitiva para a sintaxe e o uso de C#.The language specification is the definitive source for C# syntax and usage.

Consulte tambémSee also