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

Dotnet Discussion :

Changer le type d'une variable ?


Sujet :

Dotnet

  1. #1
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2002
    Messages : 264
    Points : 175
    Points
    175
    Par défaut Changer le type d'une variable ?
    est-il possible de changer le type d'une variable en cours d'application.
    Ex.:[code]
    dim myFic as myClassNomPrenom
    ...et plus loins dans le programme :
    dim myFic as myClassNomSeul.

    merci pour votre aide.
    Si vous souhaitez + d'explications, je posterai 1 exemple car c'est assez long à expliquer dans le détail.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 388
    Points : 502
    Points
    502
    Par défaut
    C'est possible, ca s'appelle un cast, par contre ca ne se fait pas comme tu l'a ecris.
    Quel langage utilises tu?

  3. #3
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    400
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 400
    Points : 444
    Points
    444
    Par défaut
    Attention, un cast n'est pas un changement de type. En général il est utilisé pour récupérer un objet dont le type fait partie de la hierarchie (héritage) de l'objet casté. Pour qu'un cast permettent un changement de type il va falloir créer un convertisseur (ça peut être un classe ou un convertisseur implicite) mais encore une fois ce n'est pas un changement de type d'une variable, c'est une conversion. A ma connaissance, il n'est pas possible de changer le type d'une variable dans un même scope

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 388
    Points : 502
    Points
    502
    Par défaut
    Citation Envoyé par oyigit Voir le message
    Attention, un cast n'est pas un changement de type. En général il est utilisé pour récupérer un objet dont le type fait partie de la hierarchie (héritage) de l'objet casté. Pour qu'un cast permettent un changement de type il va falloir créer un convertisseur (ça peut être un classe ou un convertisseur implicite) mais encore une fois ce n'est pas un changement de type d'une variable, c'est une conversion.
    A ma connaissance, il n'est pas possible de changer le type d'une variable dans un même scope
    D'apres le "code" qu'il a mis ca devrait etre possible:
    NomPrenom -> NomSeul

  5. #5
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2002
    Messages : 264
    Points : 175
    Points
    175
    Par défaut
    merci pour toutes ces réponses, je vais préciser...
    je travaille en VB et en C# (je comprends les 2)

    j'ai 2 classes qui héritent de la même classe abstraite, mais masquent certains champs :
    - soit en limitant leur portée (private au lieu du public par ex.)
    - soit avec 1 surcharge (shadows) par 1 propriété (mon exemple ClassSsNom a 1 propriété Nom qui renvoie "" car cette classe ne doit pas avoir de champs nom).

    J'ai 1 autre classe qui travaille sur ces classes et parcours les champs Publics de la classe qu'on lui passe avec :
    object.getType().GetFields()
    ...et c'est là que j'aimerais qu'elle ne récupère que les champs de l'une ou de l'autre (ne doivent plus y figurer ceux devenus private ou surchargés en propriété).

    Avec 1 exmple ce sera + clair :
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    public MustInhérits class ClassNomPrenom
      public nom as string
      public prenom as string
     
      public sub AfficheNomPrenom()
         msgbox(nom & " " & prenom)
      end sub
    end class
     
    public Class ClassSsNom
      Inhérits ClassNomPrenom
      public overrides readonly property nom
         get
            return ""
         end get
      end property
    end class
     
    Public Class ClassSsPrenom
      Inhérits ClassNomPrenom
      public overrides readonly property prenom
         get
            return ""
         end get
      end property
    end Class
     
    //---Ds 1 classe à part et ds 1 DLL en C# :
    Public static void ListAllFields(object o) 
      // on doit récup.les champs de la classe fille o qui hérite de ClassNomPrenom
       FieldInfo[] fil = o.GetType().GetFields();
      ...
    end class
     
    Public class Form1 
      ' ce qui marche :
      dim myFicSsN as myClassSsNom
      dim myFicSsP as myClassSsPrenom
      myFicSsN = new myClassSsNom
      ListAllFields(myFicSsN)
    ou
      myFicSsP = new myClassSsPrenom
      ListAllFields(myFicSsP)
    ce que je voudrais pouvoir faire dynamiquement ds le prog.:
    dim myFicX as [SsNom] ou [SsPrenom] = new [SsNom] ou [SsPrenom]
    ..et utiliser partout ds le code ensuite myFicX
    Ex. : ListAllFields(myFicX)

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 388
    Points : 502
    Points
    502
    Par défaut
    Citation Envoyé par bib34690 Voir le message
    dim myFicX as [SsNom] ou [SsPrenom] = new [SsNom] ou [SsPrenom]
    Non!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dim myFicX as SsNom  = new SsPrenom
    Impossible.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dim myFicX as SsPrenom = new SsNom
    Impossible.

    Ce ne sont pas des questions specifiques a c# ou vb.net, ce sont des notions objets. Renseigne toi sur le polymorphisme.

    Sinon si tes classes nom et prenom se limitent a cela je ne vois pas l'interet de les faire, tu peux tres bien t'en sortir avec ta classe nomprenom

  7. #7
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2002
    Messages : 264
    Points : 175
    Points
    175
    Par défaut
    pas tout à fait d'accord...

    dim myFicX as ClassNomPrenom = New ClassSsNom
    ..fonctionne
    mais ça ne me convient pas car le type de myFixX est ClassNomPrenom : qd je parcours les champs de myFixX, je n'ai pas les spécificités de ClassSsNom.

    Je ne peut pas utiliser la classe ClassNomPrenom comme je l'ai expliqué puisque les 2 classes qui en héritent masquent des champs qu'elles n'ont pas.


    J'ai essayé de transformer myFicX en property ou en fonction mais je n'y suis pas arrivé.


    Personne n'a de solution ?

Discussions similaires

  1. [VxiR2] Pouvoir changer le type d'une variable
    Par erwann_ dans le forum Deski
    Réponses: 7
    Dernier message: 12/07/2011, 11h33
  2. changer le type d'une variable
    Par mademoizel dans le forum Langage
    Réponses: 2
    Dernier message: 10/11/2009, 11h28
  3. [Débutant] Changer le type d'une colonne
    Par david71 dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 08/11/2005, 11h26
  4. Changer el type d'une variable sql sous postgre8/admin
    Par smag dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 24/08/2005, 12h31
  5. [ JSP ][ JavaScript ] Changer la valuer d'une variable
    Par romain3395 dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 08/06/2004, 15h50

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