comment tester si une variable est initialisée ? [C#] - C#/.NET managed - Programmation
Marsh Posté le 21-03-2007 à 15:07:04
utiliser _dateActivation.Equals(null) semble être accepté
Marsh Posté le 21-03-2007 à 15:26:14
Les DateTime sont des types valeur, c'est non nullable en 1.1.
Par défaut ça vaut DateTime.MinValue, tu peux donc tester si différent de cette valeur.
Marsh Posté le 23-03-2007 à 16:29:09
nemohp a écrit : arf... ça craint dotnet parfois ... |
La vieille remarque complètement gratos.
Surtout venant d'un mec qui ne sais pas coder correctement.
La solution à ton pb n'est pas lié au langage, mais à ta façon de coder.
Pour savoir si c'est initialisé, il suffit de mettre une valeur par défaut non utilisée (ex : DateTime.MinValue), et de vérifier au moment où tu le veux que cette valeur a changé.
L'avantage c'est que ça marche pour tout (types référence ou valeur), et que si jamais dans les version ultérieur du framework, la valeur par défaut change, tu es assuré de la compatibilité ascendante.
Note : ca marche aussi en Java, C++, C, et j'en passe.
Marsh Posté le 23-03-2007 à 17:06:07
je vois pas en quoi c'est mal codé... et ta remarque est également "gratos"
Ta technique, même si elle marche, n'est pas plus logique que mon idée. Instancier cette date mini, c'est du bricolage.
De nombreux languages permettent de tester si un object déclaré a bien été instancié.
D'ailleurs en C#2, ça a été implanté avec les nullables. Donc ma question est loin d'être celle d'un mauvais codeur...
Marsh Posté le 23-03-2007 à 18:27:03
nemohp a écrit : De nombreux languages permettent de tester si un object déclaré a bien été instancié. |
Tu fais la différence entre un type valeur et un type référence ?
Ca veut dire quoi "instancier" un type valeur, stp ?
Plutôt que de cracher dans la soupe gratuitement, tu ferais mieux de garder ton énergie pour apprendre, ça te permettra de faire des critiques constructives.
Marsh Posté le 05-03-2008 à 18:27:33
Salut (au cas ou tu serais de passage et que tu verrais ma réponse),
Je trouve intérescente ta solution, mais comme la valeur min d'une DateTime est 01/01/01 00:00 ... Il n'est pas impossible qu'une telle date soit présente, non ? Voila par curiosité.
Est ce que tu es sure de ne jamais avoir à faire à cette date ?
Marsh Posté le 06-03-2008 à 08:23:12
Je rejoins _Mose_. D'apres moi, la logique de ton programme ne devrait pas reposer sur le fait que les variables possedent l'etat "non initialise".
Marsh Posté le 21-04-2008 à 20:49:44
Dans .NET 2.0, il y a une classe Nullable qui permet de gérer ce genre de problème.
Il suffit simplement d'écrire un truc du genre:
Nullable<DateTime> myDate;
if (myDate == null)
{
/* non initialisé */
}
else
{
Console.WriteLine(myDate.Value);
}
Marsh Posté le 21-03-2007 à 14:22:10
Bonjour,
je cherche la commande qui permet de tester qu'une variable est bien initialisée
par exemple une classe Compte :
Quel test test ou fonction faut-il utiliser dans la methode estActive() pour controler que l'attribut _dateActivation n'a pas été déclarée ?
Message édité par nemohp le 21-03-2007 à 14:23:14