Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment tester si une structure est renseignée ou non ?

3 réponses
Avatar
ShadowFil
Bonjour,

Par exemple, l'utilisateur peut ou non renseigner une date dans une forme.
Alors, dans ma classe, j'aimerais déterminer si ma variable de type DateTime
est renseignée ou non. Mais comme le type DateTime est une structure, je ne
peux pas faire le test suivant :

DateTime date;

if (date != null)
return false; // date non saisie
else
return true; // date saisie

Car le compilateur me dit que le else ne sera jamais exécuté. Pourtant, la
variable n'est pas initialisée !

Quelle est la bonne pratique pour savoir si une structure est renseignée ou
non ?

Merci pour votre aide.

3 réponses

Avatar
Patrick Philippot
Bonjour,

Par exemple, l'utilisateur peut ou non renseigner une date dans une
forme. Alors, dans ma classe, j'aimerais déterminer si ma variable de
type DateTime est renseignée ou non. Mais comme le type DateTime est
une structure, je ne peux pas faire le test suivant :

DateTime date;

if (date != null)
return false; // date non saisie
else
return true; // date saisie

Car le compilateur me dit que le else ne sera jamais exécuté.
Pourtant, la variable n'est pas initialisée !



Il a raison :-) .

Vous ne vous posez pas la question au bon endroit :-) . Vous créez une
variable de type DateTime et vous l'initialisez avec une valeur par
défaut par précaution (l'heure courante par exemple).

Ensuite, vous nous dîtes que cette variable sera renseignée par
l'utilisateur. Cela veut donc dire que vous allez lui proposer un moyen
d'entrer cette date. OK? Et ce que vous allez faire tout de suite
derrière, c'est valider par un moyen quelconque, au niveau de
l'interface utilisateur, les infos entrées. Connaissez vous l'existence
du contrôle DateTimePicker?

Ou éventuellement:

http://www.codeproject.com/cs/miscctrl/ValidatingTextBoxControls.asp

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
DVDB
Petite précision:DateTime est une classe (type en terminologie .NET) et pas
une structure.

Si vous etes en .NET 2.0:
Certains types sont dits nullables. C'est le cas de DateTime. Vous pouvez
définir votre date de la manière suivante:
System.Nullable<DateTime> MaDate;
Ceci est la définition dite générique.

Vous pouvez aussi écrire:
DateTime? MaDate;
Tout est dans le point d'interrogation qui signifie "nullable"...

Dans les deux cas, MaDate se verra munie d'une propriété HasValue que vous
pouvez tester (ceci est vrai pour tous les types nullables).



"ShadowFil" a écrit :

Bonjour,

Par exemple, l'utilisateur peut ou non renseigner une date dans une forme.
Alors, dans ma classe, j'aimerais déterminer si ma variable de type DateTime
est renseignée ou non. Mais comme le type DateTime est une structure, je ne
peux pas faire le test suivant :

DateTime date;

if (date != null)
return false; // date non saisie
else
return true; // date saisie

Car le compilateur me dit que le else ne sera jamais exécuté. Pourtant, la
variable n'est pas initialisée !

Quelle est la bonne pratique pour savoir si une structure est renseignée ou
non ?

Merci pour votre aide.


Avatar
Sébastien FERRAND
Bonjour ShadowFil,

Tu peux aussi faire comme ceci :

DateTime date = DateTime.MinValue;

et donc ton test devient :

return (date != DateTime.MinValue);


---
Sébastien FERRAND [MVP C#]
http://blogs.developpeur.org/sebmafate
msnim:

Bonjour,

Par exemple, l'utilisateur peut ou non renseigner une date dans une
forme. Alors, dans ma classe, j'aimerais déterminer si ma variable de
type DateTime est renseignée ou non. Mais comme le type DateTime est
une structure, je ne peux pas faire le test suivant :

DateTime date;

if (date != null)
return false; // date non saisie
else
return true; // date saisie
Car le compilateur me dit que le else ne sera jamais exécuté.
Pourtant, la variable n'est pas initialisée !

Quelle est la bonne pratique pour savoir si une structure est
renseignée ou non ?

Merci pour votre aide.