vanisheur
Messages postés9Date d'inscriptionvendredi 18 juillet 2003StatutMembreDernière intervention11 août 2009
-
24 mai 2009 à 09:42
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 2012
-
24 mai 2009 à 17:58
Je suis en train de lire l'excelent ouvrage de john sharp sur le C sharp aussi ....
J'ai un probleme de comprehension sur le boxing et unboxing, j'ai bien compris le concept qui consiste a transformer une variable en un pointeur sur la copie de cette variable, la je simplifie MAIS
A QUOI ça SERT ???
Concretement dans l'univers de C# je ne VOIS pas de situation dans laquelle un tel concept est utile ??
Est-ce indispensable ??
Concernant le boxing, en général si on peut l'éviter, on l'évite, justement pour éviter le surcout.
Après on peut se retrouver dans des cas où on ne souhaite manipuler qu'un type Object, car nous ne faisons rien de la valeur : nous nous contentons de la prendre et de la passer au suivant qui sait quoi en faire.
Un exemple de ceci peut être IAsyncResult.AsyncState, lié aux executions asynchrones via BeginInvoke : le code de BeginInvoke en lui même ne se sert pas de cette valeur : il la prend en entrée et nous la refourni.
La propriété Control.Tag peut être un autre exemple.
Mais dans ce genre de cas, l'utilisation d'une classe pour le contexte est en général plus pratique que de passer directement une valeur int (par exemple) si nous n'avons besoin que de cela : c'est un peu plus ouvert à l'évolution.
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 24 mai 2009 à 17:58
Il faut aussi se souvenir que tous les types dérivent de la clase Object même les types primitifs et aussi que beaucoup de fonctions du framework attendent en paramètre un Object, dans la pratique le boxing est donc très utile pour caster un type valeur vers la clase Object.