Share via


implicit (référence C#)

Le mot clé implicit est utilisé pour déclarer un opérateur de conversion implicite défini par l'utilisateur. Utilisez-le pour permettre les conversions implicites entre un type défini par l'utilisateur et un autre type, s'il est garanti que la conversion ne provoquera pas de perte de données.

Exemple

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 des conversions superflues, les conversions implicites permettent d'améliorer la lisibilité du code source. Toutefois, comme les conversions implicites ne requièrent pas que les programmeurs effectuent explicitement un cast d'un type vers l'autre, il faut prendre soin d'empêcher les résultats inattendus. En général, les opérateurs de conversion implicite ne devraient jamais lever d'exceptions et ne jamais perdre d'informations, afin qu'elles soient utilisées de façon sûre sans que le programmeur ait à intervenir. Si un opérateur de conversion ne répond pas à ces critères, il doit être marqué comme explicit. Pour plus d'informations, consultez Utilisation d'opérateurs de conversion.

Spécification du langage C#

Pour plus d'informations, voir la Spécification du langage C#. La spécification du langage est la source de référence pour la syntaxe C# et son utilisation.

Voir aussi

Tâches

Comment : implémenter des conversions définies par l'utilisateur entre des structs (Guide de programmation C#)

Référence

Mots clés C#

explicit (référence C#)

operator (référence C#)

Concepts

Guide de programmation C#

Autres ressources

Référence C#