implicit (référence C#)implicit (C# Reference)

Le mot clé implicit est utilisé pour déclarer un opérateur de conversion de type implicite défini par l’utilisateur.The implicit keyword is used to declare an implicit user-defined type conversion operator. Utilisez-le pour permettre les conversions implicites entre un type défini par l’utilisateur et un autre type, si la conversion n’est pas susceptible de provoquer une perte de données.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.

ExempleExample

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

En éliminant les casts de type superflus, les conversions implicites peuvent améliorer la lisibilité du code source.By eliminating unnecessary casts, implicit conversions can improve source code readability. Toutefois, étant donné que les conversions implicites ne nécessitent pas que les programmeurs castent explicitement d’un type à un autre, il faut veiller à éviter les résultats inattendus.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 général, les opérateurs de conversion implicite ne doivent jamais lever d’exceptions ni perdre d’informations pour pouvoir être utilisés en toute sécurité à l’insu du programmeur.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 opérateur de conversion ne peut pas répondre à ces critères, il doit être marqué comme explicit.If a conversion operator cannot meet those criteria, it should be marked explicit. Pour plus d’informations, consultez Utilisation d’opérateurs de conversion.For more information, see Using Conversion Operators.

spécification du langage C#C# language specification

Pour plus d'informations, voir la spécification du langage C#.For more information, see the C# Language Specification. La spécification du langage est la source de référence pour la syntaxe C# et son utilisation.The language specification is the definitive source for C# syntax and usage.

Voir aussiSee also