2Fermer4
LinkLe 05/01/2011 à 11:47
L'autre problème, c'est "l'ancien" sens du mot "handle". En fait, il n'y a pas assez de mots différents pour qualifier:
* Les pointeurs de base ("pointeur")
* Les références C++ ("référence")
* Les "références d'objet" indiquant un objet managé ("handle" en C++/CLI, "référence" pour la plupart des autres langages): En gros, si tu as programmé en Java, ça correspond tout simplement à une référence Java
* Les "fichiers ouverts" vus de Windows et divers autres choses de l'API Windows ("handle" aussi).
Des classes comme GCHandle désignent le sens rouge du terme.
Des classes comme SafeHandle désignent le sens bleu du terme.

GCHandle(Pinned) permet d'obtenir un "pointeur punaise" sur un objet managé, via sa méthode AddrOfPinnedObject(). C'est l'équivalent du pin_ptr<> de C++/CLI.
GCHandle(Normal) permet de stocker une référence d'objet managé dans un contexte non-managé, ce doit être assez voisin du gcroot<> de C++/CLI.