implicit (Referencia de C#)implicit (C# Reference)

La palabra clave implicit se usa para declarar un operador de conversión de tipo implícito definido por el usuario.The implicit keyword is used to declare an implicit user-defined type conversion operator. Úsela para permitir conversiones implícitas entre un tipo definido por el usuario y otro tipo, si existen garantías de que la conversión no provocará la pérdida de datos.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.

EjemploExample

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();
    }
}

Si se eliminan las conversiones innecesarias, las conversiones implícitas pueden mejorar la legibilidad del código fuente.By eliminating unnecessary casts, implicit conversions can improve source code readability. En cambio, como las conversiones implícitas no requieren que los programadores conviertan explícitamente un tipo en otro, deben tomarse las medidas adecuadas para impedir que se produzcan resultados imprevistos.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. En general, los operadores de conversión implícita nunca deberían producir excepciones ni pérdida de información, de modo que puedan usarse de manera segura sin intervención del 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. Si un operador de conversión no cumple esos criterios, debería marcarse como explicit.If a conversion operator cannot meet those criteria, it should be marked explicit. Para obtener más información, vea Usar operadores de conversión (Guía de programación de C#).For more information, see Using Conversion Operators.

Especificación del lenguaje C#C# language specification

Para obtener más información, consulte la Especificación del lenguaje C#.For more information, see the C# Language Specification. La especificación del lenguaje es la fuente definitiva de la sintaxis y el uso de C#.The language specification is the definitive source for C# syntax and usage.

Vea tambiénSee also