|
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 : FooBase, IA {
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
|