Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 28 nov. 2005 à 13:05
Effectivement c'est intéressant de regarder le code IL, la seule différence est dans la 3ème définition ou le compilateur marque explicitement l'attribut In, ce qui me semble inutile, j'en conclu que ses 3 définitions sont équivalentes, qu'en penses tu ?
.method public hidebysig newslot abstract virtual
instance valuetype WindowsApplication1.HRESULT
GetState(int32 msTimeout,
[out] valuetype WindowsApplication1.FilterState& pfs) cil managed preservesig
{
} // end of method IMediaControl1::GetState
.method public hidebysig newslot abstract virtual
instance valuetype WindowsApplication1.HRESULT
GetState(int32 msTimeout,
[out] valuetype WindowsApplication1.FilterState& pfs) cil managed preservesig
{
} // end of method IMediaControl2::GetState
.method public hidebysig newslot abstract virtual
instance valuetype WindowsApplication1.HRESULT
GetState([in] int32 msTimeout,
[out] valuetype WindowsApplication1.FilterState& pfs) cil managed preservesig
{
} // end of method IMediaControl3::GetState
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 29 nov. 2005 à 20:25
Salut,
Dans le cas du paramètre int (Int32), oui, car il s'agit d'un type "blittable".
Maintenant si il s'agissait d'un type non-blittable, genre string, qui nécessite une conversion entre le monde managé et le monde non managé, l'économie d'une conversion inutile, celle de l'appelé vers l'appelant, n'est peut etre pas négligeable.
A voir :-)
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 29 nov. 2005 à 23:54
Vi on est d'accord, ce qui me paraissait bizarre c'est l'attribut [ Out ] accolé au mot clé out, j'avais peur que ça fasse quelque chose genre pointeur sur pointeur.