septembre
2008
C# 2.0 avait introduit la notion de classe partielle qui permet de fractionner une classe en plusieurs parties mais cette évolution ne concerne pas uniquement les classes car vous pouvez faire de même avec les structures et les interfaces. Grâce au mot clé « partial », il devenait donc possible de déclarer une classe dans un fichier et compléter cette même classe dans un autre fichier. D’ailleurs, cette technique des classes partielles est allègrement utilisée avec les designers (Windows Forms, DataSet, Linq to SQL, etc).
Depuis C# 3.0, il est possible d’aller plus loin en profitant de cette notion des partielles au niveau des méthodes.
Comme je vous le disais, les classes partielles existent depuis C# 2.0 et en voici donc un exemple tout simple :
namespace PartialClassExample private void Initialize() public partial class Product |
Comme vous pouvez le voir, mes deux classes partielles n’en représente qu’une seule, d’ailleurs lors de la compilation, le compilateur s’occupera de fusionner ces deux fractions de classe en une et même classe.
Cette technique s’avère extrêmement utile avec le code généré par les designers car tout ce qui est fait au travers d’un designer est répercuté dans une classe partielle créée dans un fichier (la plupart du temps appelé xxx.Designer.cs). Si le développeur désire ajouter des fonctionnalités à cette classe, il en aura tout à fait la possibilité en créant un nouveau fichier où il pourra continuer le développement de cette classe partielle.
Mais depuis C# 3.0, la notion des partiels s’est étendue aux méthodes. Le but ici est d’avoir d’un côté des méthodes partielles permettant de définir la signature de chacune et de l’autre côté ces mêmes méthodes avec leur implémentation. Autant vous le dire tout de suite, ceci ne sera évidemment possible que dans des classes partielles. En voici un exemple :
namespace PartialClassExample partial void onProductChanged(); public string Name public partial class Product |
Tout comme pour les classes partielles, on retrouve le mot clé « partial ». La première classe partielle va se contenter de déclarer la méthode partielle « onProductChanged », sans pour autant définir le corps de cette méthode. C’est dans la seconde classe partielle que l’on va retrouver l’implémentation de cette méthode.
Comme vous pouvez le voir aussi, la première classe partielle appelle la méthode « onProductChanged ». Si nous n’avions pas défini d’implémentation à cette méthode, le compilateur aurait optimisé le code pour effacer toute trace de cette méthode qui ne sert dans ce cas là plus à rien.
Cependant, les méthodes partielles sont soumises à quelques règles qu’il ne faut pas oublier :
- Une méthode partielle doit commencer par le mot clé « partial »
- Une méthode partielle doit retourner « void »
- Il est possible d’utiliser le mot clé « ref » pour un paramètre mais pas « out »
- Une méthode partielle est implicitement privée, elle ne peut donc pas être virtuelle
- Une méthode partielle ne peut pas être externe
- Une méthode partielle peut être marquée comme étant « static » ou « unsafe »
- Une méthode partielle peut être générique
- Il n’est pas possible de créer un délégué à une méthode partielle
Maintenant, vous vous demandez sûrement l’intérêt de méthodes partielle et pourtant il y en a un. Cependant, il vous faudra attendre mon prochain billet où je vous démontrerai l’utilité des ces méthodes partielles avec un cas réel…
Je n’en dis pas plus pour l’instant, donc patience
Déménagement
Next Microsoft CEO
Articles récents
- Changement d’adresse de ce blog
- Article : les nouveautés de C# 5.0
- Modèle Entity Framework généré avec SQL Server 2008 et utilisé sous SQL Server 2005
- Les photos, vidéos et cadeaux des TechDays 2011
- La première journée en ligne sur TechDays TV
- Suivez les TechDays 2011 comme si vous y étiez sur la chaîne TechDays TV
- Téléchargez le programme des conférence des TechDays 2011
- Dernier jour des TechDays = plus de chance de remporter des cadeaux sur le stand de dvp !
- Venez à notre rencontre lors des TechDays 2011
- Les flux à ne pas rater lors des TechDays 2011
- Les TechDays 2011 s’invite sur votre smartphone Windows Phone 7
- Exclu des cadeaux du concours Developpez.com lors des TechDays 2011
- Ouverture de la galerie d’images sur notre site des TechDays
- Partagez votre expérience des Microsoft TechDays
- Grand concours Microsoft “FAN des TechDays 2011” : épisode 2 !
- Mettez-vous aux couleurs des TechDays 2011 !
- Developpez.com aux TechDays 2011
- Le Challenge Azure 2010 est fini !
- Suivez la keynote de la pdc10 en direct sur internet à 18h !
- MVP Visual C# 2010 – 2011 !!!