utilisation de "define"

Le
Maurice60
bjr
dans nos projet en c++ on utilisaot bcp ce genre de macro
#define GET__ELEMENT(a) CElement *Courant = ::ListeElements->Elements;
while(Courant)
{
if(dynamic_cast<a *>(Courant))
if((dynamic_cast<a *>(Courant))->Numero == no)
return (a *) Courant;
Courant = Courant->Next;
}
return NULL;

peut-on faire la meme chose en c#?
merci
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Patrice
Le #20593311
Bonjour,

Pas "out of the box". Il doit y avoir éventuellement des preprocesseurs
tiers si l'on veut vraiment faire des macros. Sinon c'est normalement le
compilateur qui est responsable de mettre le code "inline" si il le trouve
opportun.

--
Patrice


"Maurice60" groupe de discussion :
bjr
dans nos projet en c++ on utilisaot bcp ce genre de macro
#define GET__ELEMENT(a) CElement *Courant = ::ListeElements->Elements;
while(Courant)
{
if(dynamic_cast<a *>(Courant))
if((dynamic_cast<a *>(Courant))->Numero == no)
return (a *) Courant;
Courant = Courant->Next;
}
return NULL;

peut-on faire la meme chose en c#?
merci



Christophe Lephay
Le #20611281
"Maurice60" groupe de discussion :
bjr
dans nos projet en c++ on utilisaot bcp ce genre de macro
#define GET__ELEMENT(a) CElement *Courant = ::ListeElements->Elements;
while(Courant)
{
if(dynamic_cast<a *>(Courant))
if((dynamic_cast<a *>(Courant))->Numero == no)
return (a *) Courant;
Courant = Courant->Next;
}
return NULL;

peut-on faire la meme chose en c#?



L'opérateur as fonctionne comme le dynamic_cast (renvoie null si la
conversion échoue).

En mot à mot, ça donne :

if (Courant is a)
if ( (Courant as a).Numero == no)
return (a)Courant;
Courant = Courant.Next;

Sinon, on peut faire la conversion une seule fois :

a* Courant_a = dynamic_cast<a*>(Courant);
if (Courant_a && Courant_a->Numero == no)
return Courant_a;

donnerait en c# :

a Courant_a = Courant as a;
if (Courant_a != null && Courant_a.Numero == no)
return Courant_a;
Publicité
Poster une réponse
Anonyme