ricklekebekoi
Messages postés303Date d'inscriptionmardi 11 février 2003StatutMembreDernière intervention24 avril 2009
-
26 août 2008 à 17:05
poulpe86
Messages postés6Date d'inscriptionvendredi 5 septembre 2008StatutMembreDernière intervention 8 janvier 2009
-
27 oct. 2008 à 09:50
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
poulpe86
Messages postés6Date d'inscriptionvendredi 5 septembre 2008StatutMembreDernière intervention 8 janvier 2009 27 oct. 2008 à 09:50
parfaitement ce que je cherchait... merci beaucoup
(note maximal sauf la dernière étoile : il pourrait y avoir un petit peu plus de commentaire ;))
excellente source
cs_boutemine
Messages postés78Date d'inscriptiondimanche 8 mai 2005StatutMembreDernière intervention21 mars 20182 21 oct. 2008 à 18:04
Slt jack
Et oui, c vrai, le string est un polymorphe ;)
Esperant que la source vous aide dans ton project
Bon prog
Gendal67
Messages postés627Date d'inscriptionmercredi 16 juin 2004StatutMembreDernière intervention24 juillet 20112 20 oct. 2008 à 06:40
Je m'étais jamais posé la question sur un switch/case sur String en fait.
La réflexion de Rick m'a donné l'envie de faire des tests.
Conclusion :
• Un case s'utilise exclusivement avec des constantes. Les chaines de caractères en .NET étant immuables, elles sont donc toutes constantes (si vous changez la chaine, .NET recrée une nouvelle implicitement avec les nouvelles données)
• Si vous déclarer un objet (autre que String) avec le modificateur const afin qu'il soit possible de faire un switch/case dessus, Visual Studio vous informera d'un Warning du type "Tout objet const autre que Sring est obligatoirement initialisé à null".
-> Conclusion finale : le type String est un type particulier dont le comportement vis à vis des switch/case ne semble pas pouvoir être reproduit.
La seule chose que l'on puisse faire c'est faire un switch(monObjet) avec des case de type valueType constantes... en implémentant biensur l'opérateur de cast implicite de monObjet en ce type valueType ; ça, ça fonctionne.
Bref, désolé pour la digression là dessus...
Sinon, merci beaucoup pour la source, j'avais justement besoin de ça pour mon projet !
Cordialement,
Jack
Gendal67
Messages postés627Date d'inscriptionmercredi 16 juin 2004StatutMembreDernière intervention24 juillet 20112 20 oct. 2008 à 06:24
Oui, on peut le faire.
Par contre, un String n'est pas un type valeur mais un type référence
cs_boutemine
Messages postés78Date d'inscriptiondimanche 8 mai 2005StatutMembreDernière intervention21 mars 20182 26 août 2008 à 19:10
Biensur on peut le faire sur tous les objets valueType
ricklekebekoi
Messages postés303Date d'inscriptionmardi 11 février 2003StatutMembreDernière intervention24 avril 20095 26 août 2008 à 17:05
Han tiens c'est nouveau ça un switch/case sur une chaine de caractere, ou bien il a toujours été possible de le faire et je n'ai seulement que pris pour acquis qu'on pouvais pas ?
27 oct. 2008 à 09:50
(note maximal sauf la dernière étoile : il pourrait y avoir un petit peu plus de commentaire ;))
excellente source
21 oct. 2008 à 18:04
Et oui, c vrai, le string est un polymorphe ;)
Esperant que la source vous aide dans ton project
Bon prog
20 oct. 2008 à 06:40
La réflexion de Rick m'a donné l'envie de faire des tests.
Conclusion :
• Un case s'utilise exclusivement avec des constantes. Les chaines de caractères en .NET étant immuables, elles sont donc toutes constantes (si vous changez la chaine, .NET recrée une nouvelle implicitement avec les nouvelles données)
• Si vous déclarer un objet (autre que String) avec le modificateur const afin qu'il soit possible de faire un switch/case dessus, Visual Studio vous informera d'un Warning du type "Tout objet const autre que Sring est obligatoirement initialisé à null".
-> Conclusion finale : le type String est un type particulier dont le comportement vis à vis des switch/case ne semble pas pouvoir être reproduit.
La seule chose que l'on puisse faire c'est faire un switch(monObjet) avec des case de type valueType constantes... en implémentant biensur l'opérateur de cast implicite de monObjet en ce type valueType ; ça, ça fonctionne.
Bref, désolé pour la digression là dessus...
Sinon, merci beaucoup pour la source, j'avais justement besoin de ça pour mon projet !
Cordialement,
Jack
20 oct. 2008 à 06:24
Par contre, un String n'est pas un type valeur mais un type référence
26 août 2008 à 19:10
26 août 2008 à 17:05