cs_mathmax
Messages postés403Date d'inscriptionvendredi 28 octobre 2005StatutMembreDernière intervention31 août 2008
-
4 nov. 2005 à 18:39
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014
-
16 nov. 2005 à 16:31
J'ai une question concernant les enumérations. Voici d'abord le bout de code que j'essai de comprendre :
using
System;
public class intro
{
enum mention {Passable,AssezBien,Bien,TrèsBien, Excellent};
public static void Main()
{
mention maMention=mention.Passable;
foreach(mention m in
Enum.GetValues(maMention.GetType()))
{
Console.Out.WriteLine(m);
}
}
}
Pourquoi ne peux t-on pas remplacer "maMention.GetType()" par "mention". mention n'est-il pas le type de maMention ?
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 5 nov. 2005 à 17:56
"Ok donc si j'ai bien compris :
1) L'opérateur GetValue attend le type de l'instance Mamention (c.a.d en fait "mention" mais celle-ci ne peut-être mis directement dans Getvalue pour des problèmes de syntaxe *).
2) C'est pourquoi on doit d'abord créer une instance de "mention" puis récupérer son type avec GetType. L'opérateur typof permet de se passer de l'instance, il récupère directement de type de mon type mention.*
3) Est-ce vraiment pour une histoire de syntaxe ou alors mention n'est il tout simplement pas un Type?
Ou alors, est-ce un type mais pas seulement et c'est pourquoi on ne veux que récupérer son type avec des opérateurs comme GetType et Typof ?
4) Question : Qu'appelles-tu "classe Type" ? Est-ce que classe type = type ?"
0) Tu as ouvert les pages de la doc que j'ai linkées ?
2) C'est pourquoi on doit d'abord créer une instance de "mention" puis récupérer son type avec GetType. L'opérateur typof permet de se passer de l'instance, il récupère directement de type de mon type mention.*
Parfaitement, surtout la 2eme partie.
3) Est-ce vraiment pour une histoire de syntaxe ou alors mention n'est il tout simplement pas un Type?Ou alors, est-ce un type mais pas seulement et c'est pourquoi on ne veux que récupérer son type avec des opérateurs comme GetType et Typof ?
"mention" est un type (type classe en l'occurence), mais pas une instance de la classe =/library/fre/cpref/html/frlrfsystemtypeclasstopic.asp System.Type
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 4 nov. 2005 à 23:41
public static Array GetValues(
Type enumType );
La méthode GetValues attend en paramètre (enumType) une instance de la classe Type représentant ton enum, chose que permettent d'obtenir la méthode GetType et le mot clé typeof.
/*
coq
MVP Visual C#
*/
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 5 nov. 2005 à 00:14
Non, mention est un type, mais pas une instance de la classe Type (qui décrit un type), et on obtient cette instance de plusieurs façons :
- utilisation de la méthode Object.GetType comme tu l'avais fait
- utilisation de l'opérateur typeof - utilisation de la méthode Type.GetType
cs_mathmax
Messages postés403Date d'inscriptionvendredi 28 octobre 2005StatutMembreDernière intervention31 août 2008 5 nov. 2005 à 12:46
Dans ce cas, si "maMention est une instance de la classe Enum" et "si GetValues attend en paramètre (enumType) une instance de la classe Type représentant ton enum", pourquoi ne peut-on pas écrire : GetValues(maMention))?
Désolé d'insister mais il doit y avoir quelque chose qui m'échappe.
cs_mathmax
Messages postés403Date d'inscriptionvendredi 28 octobre 2005StatutMembreDernière intervention31 août 2008 5 nov. 2005 à 15:15
Ok donc si j'ai bien compris :
L'opérateur GetValue attend le type de l'instance Mamention (c.a.d en fait "mention" mais celle-ci ne peut-être mis directement dans Getvalue pour des problèmes de syntaxe *). C'est pourquoi on doit d'abord créer une instance de "mention" puis récupérer son type avec GetType.
L'opérateur typof permet de se passer de l'instance, il récupère directement de type de mon type mention.
* Est-ce vraiment pour une histoire de syntaxe ou alors mention n'est il tout simplement pas un Type? Ou alors, est-ce un type mais pas seulement et c'est pourquoi on ne veux que récupérer son type avec des opérateurs comme GetType et Typof ?
Question : Qu'appelles-tu "classe Type" ? Est-ce que classe type = type ?
cs_mathmax
Messages postés403Date d'inscriptionvendredi 28 octobre 2005StatutMembreDernière intervention31 août 2008 16 nov. 2005 à 16:26
Après avoir lu un bon bout de tutoriel, je comprends mieux ce que tu m'a expliqué coq. Il me manquait pas mal de notions sur les classes, les types, les propriétés... Merci beaucoup pour la patience dont tu as fait preuve.