romagny13
Messages postés687Date d'inscriptionlundi 10 janvier 2005StatutMembreDernière intervention27 août 2014
-
7 mai 2007 à 18:26
romagny13
Messages postés687Date d'inscriptionlundi 10 janvier 2005StatutMembreDernière intervention27 août 2014
-
9 mai 2007 à 20:28
Bonjour,
La question semble simple et pourtant cela peut etre un casse tete ...
je cherches à affecter une valeur null à une variable
ex:
j'ai une variable de type DateTime ,
si on ne lui affecte aucune valeur elle a par défaut la valeur 01/01/0001 00:00:00
aussi je voudrais tout simplement que cette variable soit vide donc null
c'est pareil pour un int par exemple si on ne lui affecte pas de valeur par défaut il aura 0 , mais je ne veux tout simplement que cette variable soit "vide"
j'ai essayé avec UneVariableDeTypeDate = System.
Convert.DBNull;
mais j'ai des problêmes de cast même en essayant
UneVariableDeTypeDate = (
DateTime
) System.
Convert.DBNull;
j'ai regardé au niveau des datasets et j'ai observé que selon que une datarow a une valeur ou non le type de la datarow est changé dynamiquement selon exactement ce même type de ligne de code que si dessus
en fait la classe DataRow du dataset a des methodes SetNull pour chaque champ
mais pas moyen c'est quand même important car on a parfois besoin justement que nos variables restent vides
certains vont peut etre me parler des nullables (ce peut etre une solution) mais je pense aussi à .NET 1.0 et il n'y a pas de nullables en .NET 1.0 (a moins de se recréer la structure mais bon lol) enfin bref
si vous savez comment affecter une valeur null à une varible de type int ou datetime (par exemple) merci de me le dire :p
A voir également:
Un objet qui autorise la valeur null doit posséder une valeur.
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201360 7 mai 2007 à 19:37
Le SetNull du DataEow applique un System.DBNull.Value sur l'index spécifié. Comme c'est une collection d'object, pas de problème...
Je ne vois pas le rapport avec un value type ?
cs_coq
Messages postés6351Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014100 7 mai 2007 à 19:39
Le DataSet manipule de l'object, qui lui est un type reference et peut donc etre une référence nulle.
Mais cette solution de typer object, en dehors d'être relativement moche, entraîne fatalement du boxing/unboxing...
Donc si tu veux vraiment gérer à la mano, l'utilisation d'un booléean d'état me parait plus propre.
cs_coq
Messages postés6351Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014100 7 mai 2007 à 18:58
Salut,
La réponse courte : tu ne peux pas ^^
"mais pas moyen c'est quand même important car on a parfois besoin justement que nos variables restent vides"
Oui, les types nullables n'ont pas été pensés par hasard...
romagny13
Messages postés687Date d'inscriptionlundi 10 janvier 2005StatutMembreDernière intervention27 août 20143 7 mai 2007 à 20:20
Oui
en fait c'est evident un object peut etre null
mais pas un int ni un datetime ne pourra jamais l'etre et serait initilaiser automatiquement à 01/01/0001 etc . et 0 ?
bon ba super donc en .NET 2.0 y a les nullables
et en .NET 1.0 ba de la bidouille lol
++
le code des méthodes serait à améliorer mais elles pourraient devenir utiles
cela permet de passer instantanément le type d'un object
ainsi une variable peut etre de type DateTime et avoir tous les avantages
et ensuite lui a&ffecter DNull
en .NET 2.0 il y a même certainement moyen de l'améliorer encore avec les generics
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201360 8 mai 2007 à 14:03
Mais qu'est ce que c'est cette horreur ???
A aucun moment tu n'affectes une valeur null à un DateTime ou un int dans ton code. Ce que tu fais, c'est boxer ton type dans un object (qui est un reference type et qui peut donc être null).
Bref, code très moche et bien sûr très lent.
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201360 8 mai 2007 à 14:26
Voui, le désavantage dans ce cas c'est qu'il faut faire un wrapper juste pour rajouter l'état du value-type... Au moins, on n'évite le boxing.
C'est déjà pas mal