|
Exemple 11-41 extrait du chapitre Notions de classe et d'objet
Exemple 11-40< > Exemple 11-42
Cet exemple peut être compilé avec la ligne de commande: csc.exe /target:exe Exemple_11_41.cs Erreurs: 1 Avertissements: 0 Remarque:
Exemple_11_41.cs
public class Distance {
public double m_Mesure = 0.0;
public Distance(double d) { m_Mesure = d; }
public static implicit operator double(Distance d) {
if (object.ReferenceEquals(d, null))
return 0.0;
return d.m_Mesure;
}
public static implicit operator string(Distance d) {
if (object.ReferenceEquals(d, null))
return null;
return string.Format("Distance:{0:##.##} mètres", d.m_Mesure);
}
}
class Program {
static void Main() {
Distance d1 = new Distance(5.3);
// Erreur de compilation: Opérateur de transtypage ambiguë.
// Doit-on transtyper d1 en un double ou une string ?
System.Console.WriteLine(d1);
// OK pas d'ambiguïté, mais il vaut mieux déclarer les opérateurs
// de transtypage comme explicite.
System.Console.WriteLine( (string) d1);
}
}
Copyright Patrick Smacchia 2006 2007
|