Declarer une structure nulle

Signaler
Messages postés
223
Date d'inscription
mardi 27 mai 2003
Statut
Membre
Dernière intervention
3 juin 2019
-
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
-
Bonjour
Je veux appeller une fonction dont un des paramètres doit être nul or ce paramètre est une structure comment puis-je declarer une structure nulle ?
Merci

www.survey-copter.com

5 réponses

Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
54
Salut,
On ne peut pas rendre une structure null (elle n'est pas sur le heap)
A la place, tu peux mettre une property static qui donne une valeur par défaut à ta structure.
Regarde par exemple la structure Point (System.Drawing) qui a une property static Empty.

<hr />
-Blog-
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
62
Ou alors,  mais je ne sais pas si ça répond à ta question, tu peux déclarer ton instance de structure comme nullable :

testStruct

?
test =
null;

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
Messages postés
223
Date d'inscription
mardi 27 mai 2003
Statut
Membre
Dernière intervention
3 juin 2019
1
Ben non en fait car ma structure est de ce type
public struct GM_Projection_t
    {
        public PROJSYS ProjSys;   // Projection system
        public DATUM Datum;     // Horizontal datum
        public UNIT Unit;      // Ground units
        public uint NumAttrs;  // Number of attributes in attribute list
        public IntPtr AttrList;  // Pointer to attribute list.  Pointer to GM_ProjAttrValue_t
    };

La doc de ma dll me dit
GM_Error_t32 GM_ProjectPoint
(
double aXIn, // IN: X coordinate of input point
double aYIn, // IN: Y coordinate of input point
double* aXOut, // OUT: X coordinate of output point
double* aYOut, // OUT: Y coordinate of output point
const GM_Projection_t* aProjIn, // IN: projection to convert from (NULL for current)
const GM_Projection_t* aProjOut // IN: projection to convert to (NULL for current)
);

et je la déclare en c# comme ceci
        [DllImport(DLLFileName, EntryPoint = "GM_ProjectPoint")]
        public static extern GM_Error_t32 GM_ProjectPoint(double aXIn, double aYIn, out double aXOut, out double aYOut, ref GM_Projection_t aProjIn, ref GM_Projection_t aProjOut);

et je voudrais essayer de voir comment la fonction reagit avec un parametre nul
Merci

www.survey-copter.com
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
38
Pour passer une structure NULL, c-à-d un pointeur NULL, c'est IntPtr.Zero ( ou null si la prototype est unsafe ). mais je croyais que tu avais déja testé on en a parlé >ICI<
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
38
Bien sur tu dois modifier aussi le prototype, tu peux très bien définir 2 prototypes ( comme une surcharge de fonction ) l'un avec des ref  l'autre avec des IntPtr.