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 12-15 extrait du chapitre Héritage/dérivation polymorphisme et abstraction


Exemple 12-14<     > Exemple 12-16


Cet exemple peut être compilé avec la ligne de commande:
csc.exe /target:exe Exemple_12_15.cs
Erreurs: 0 Avertissements: 0
Remarque:


Exemple_12_15.cs
using System;
interface IA { void f(int i); }
interface IB { void g(int i); }
abstract class FooBase { public abstract void h(int i); }
class FooDeriv : FooBaseIA {
   public void f(int i) { /*...*/ }
   public override void h(int i){ /*...*/ }
}
class Program {
   static void Main() {
      IA refA = new FooDeriv();
      IB refB = null;
      FooBase refAbst = null;
      FooDeriv refC = null;
      // Ici, le transtypage peut se faire.
      if ( refA is FooBase ){
         refAbst = (FooBase)refA;
         // utilise refAbst...
      }
      // Ici, le transtypage peut se faire.
      if ( refA is FooDeriv ){
         refC = (FooDeriv)refA;
         // utilise refC...
      }
      // Ici le transtypage ne peut pas se faire,
      if ( refA is IB ){
         refB = (IB)refA;
         // utilise refB...
      }
      // Cette expression est toujours vraie si IA n'est pas nulle. 
      // Le compilateur l'interpète comme: if( refA!= null )
      if ( refA is IA ){ /*...*/ }
   }
}	
Copyright Patrick Smacchia 2006 2007