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.