IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

L’opérateur typeid de C++ : existe-t-il en c#?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 118
    Par défaut L’opérateur typeid de C++ : existe-t-il en c#?
    Bonjour,

    Comme vous savez : l’opérateur typeid permet de connaître le type d’un
    objet lors de exécution.

    Je voudrais savoir si l'opérateur typeid (de C++) existe en c#?
    si non comment utiliser un autre qui fait le même travail ?
    (Par exemple : sachant que la classe "Cube" hérite de la Classe "ObjetGeo" ,
    ce code ( qui est en c++ )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ObjetGeo *Tableau[N];
    int nbCube=0;
    for(i=0; i<N; i++)
    if ( typeid( Tableau[i] ) == typeid( Cube))
    nbCube++;
    comment l'écrire en c# ? )


    Merci d'avance

  2. #2
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Regarde typeof mais aussi le mot clé is qui est plus simple pour ce que tu veux

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 118
    Par défaut
    Citation Envoyé par StormimOn Voir le message
    Regarde typeof mais aussi le mot clé is qui est plus simple pour ce que tu veux
    Merci bien StormimOn ,

    Oui , le "typeof" fait l'affaire , mais je sais pas pourquoi ça marche pas dans une boucle Switch !

    J'explique :
    ce code marche bien :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
             if (mavariable.GetType() == typeof(uneClasse))
                    {
                        ...
     
                    }
    mais celui là ne marche pas :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
                    switch (mavariable.GetType())
                    {
                     case typeof(uneClasse) : {
                         ...
     
                     }break;
     
     
                    }
    Pourtant c'est le même traitement !
    (l'erreur est :
    1-A value of an integral type expected
    2-A constant value is expected )

  4. #4
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Le switch ne peut être utilisé qu'avec des valeurs intégrales (valeurs numériques, chaînes de caractères, énumération). Tu dois passer par un if pour faire ce que tu veux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (maVariable is UneClasse)
    {
    }
    else if (maVariable is UneAutreClasse)
    {
    }
    ...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 118
    Par défaut
    Citation Envoyé par StormimOn Voir le message
    Le switch ne peut être utilisé qu'avec des valeurs intégrales (valeurs numériques, chaînes de caractères, énumération). Tu dois passer par un if pour faire ce que tu veux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (maVariable is UneClasse)
    {
    }
    else if (maVariable is UneAutreClasse)
    {
    }
    ...
    Oui bien sure, je vais travailler avec le if ... else if ... mais c'est assez lourd !
    Merci en tout cas

  6. #6
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Tu peux aussi utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    using System;
     
    class A
    {
    }
     
    class B
    {
    }
     
    class Test
    {
    	static void Main()
    	{
    		Object o = new A();
     
    		switch (o.GetType().ToString())
    		{
    			case "A":
    				Console.WriteLine("A");
    				break;
    			case "B":
    				Console.WriteLine("B");
    				break;
    		}
    	}
    }
    Cependant cette méthode est moins maintenable que l'autre, si les types changent de namespace par exemple.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [ADO] Tester l'existence d'une table
    Par nd25 dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 05/09/2002, 13h55
  2. Check Url pour savoir si erreur 404 ou si le site existe
    Par Clément[Delphi] dans le forum Composants VCL
    Réponses: 2
    Dernier message: 07/08/2002, 13h49
  3. Existe-t'il un type tenant sur 2 octets ?
    Par benj63 dans le forum C++Builder
    Réponses: 13
    Dernier message: 20/06/2002, 17h03
  4. Existe t'il un composant permettant de jouer un son wav?
    Par scorpiwolf dans le forum C++Builder
    Réponses: 5
    Dernier message: 20/06/2002, 14h10
  5. Existe-t-il un langage de prog "virtuel" en Français
    Par HRS dans le forum Langages de programmation
    Réponses: 4
    Dernier message: 10/06/2002, 18h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo