Home
Browsez les 647 exemples
Téléchargez les 647 exemples
Téléchargez des chapitres
Achetez sur amazon.fr

Niveau: Débutant/Intermédiaire
ISBN-2-84177-339-6
50 Euros

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