Attributs directionnels

Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 - 27 nov. 2005 à 21:02
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 30 nov. 2005 à 09:15
Salut, y'a t'il une différence entre ses définitions COM !?

[ Guid( "56a868b1-0ad4-11ce-b03a-0020af0ba770" ) ]
[ InterfaceType( ComInterfaceType.InterfaceIsDual ) ]
public interface IMediaControl
{
// ..


[ PreserveSig ]
HRESULT GetState( int msTimeout, out FilterState pfs );


// ..
}


[ Guid( "56a868b1-0ad4-11ce-b03a-0020af0ba770" ) ]
[ InterfaceType( ComInterfaceType.InterfaceIsDual ) ]
public interface IMediaControl
{
// ..


[ PreserveSig ]
HRESULT GetState( int msTimeout, [ Out ] out FilterState pfs );


// ..
}


[ Guid( "56a868b1-0ad4-11ce-b03a-0020af0ba770" ) ]
[ InterfaceType( ComInterfaceType.InterfaceIsDual ) ]
public interface IMediaControl
{
// ..


[ PreserveSig ]
HRESULT GetState( [ In ] int msTimeout, [ Out ] out FilterState pfs );


// ..
}

7 réponses

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
28 nov. 2005 à 12:28
je crois que ca joue au niveau du code IL... mais surtout au niveau de la TLB

maintenant, pour être sûr, faudra faire des tests

Sébastien FERRAND
[MVP C#]
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
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
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
28 nov. 2005 à 15:14
je pencherais pour la même conclusion que toi...

Sébastien FERRAND
[MVP C#]
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
28 nov. 2005 à 19:41
OK merci ; )
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
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 :-)

/*
coq
MVP Visual C#
*/
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
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.
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
30 nov. 2005 à 09:15
Apparemment non donc.
Par contre précisier l'attribut directionnel systématiquement améliore la lisibilité je trouve :-)

/*
coq
MVP Visual C#
*/
0
Rejoignez-nous