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 :

[migration depuis C++] class pair


Sujet :

C#

  1. #1
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Points : 661
    Points
    661
    Par défaut [migration depuis C++] class pair
    Hello, je cherche la classe C# correspondant à la classe pair de la STL en C++.

    j ai pensé à DictionaryEntry ... ?
    merci d'avance.

    PS: inutil de me preciser que je peux la reimplementer moi-même.
    Pour les details, cherche tout seul !

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Peux tu expliquer ce qu'est une classe pair en C++ ?
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  3. #3
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Il existe une classe Pair perdue au milieu du system.web.ui.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  4. #4
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Points : 661
    Points
    661
    Par défaut
    Citation Envoyé par ced600 Voir le message
    Peux tu expliquer ce qu'est une classe pair en C++ ?
    c'est une classe ( struct par dessous je crois) qui comporte juste deux membre independant. Utilisé pour traité deux object en un.

    Cela dis, j ai résolu mon problème en utilisant une entrée de dictionnaire
    Pour les details, cherche tout seul !

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 547
    Points : 627
    Points
    627
    Par défaut
    KeyValuePairs<U, V> de Generics ne conviendrait-il pas ?

  6. #6
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Citation Envoyé par ZaaN Voir le message
    c'est une classe ( struct par dessous je crois) qui comporte juste deux membre independant. Utilisé pour traité deux object en un.

    Cela dis, j ai résolu mon problème en utilisant une entrée de dictionnaire
    Merci.

    Mais cela ne me semble pas très utile. Enfin ce n'est pas le problème ici.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  7. #7
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Citation Envoyé par ced600 Voir le message
    Merci.

    Mais cela ne me semble pas très utile. Enfin ce n'est pas le problème ici.
    ça peut (pouvait ?) être utile pour une fonction qui doit retourner simplement deux variables.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  8. #8
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Citation Envoyé par SaumonAgile Voir le message
    ça peut (pouvait ?) être utile pour une fonction qui doit retourner simplement deux variables.
    Donc c'est de la bidouille. Il y en a d'autre pour ce genre de cas :
    - Renvoyer un objet.
    - Renvoyer une structure.
    - Renvoyer 1 variable et modifier l'autre dans la fonction.
    - Renvoyer un tableau.
    - Et certainement d'autre.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    ben de toutes façons c'est assez bidon de réimplémenter une paire générique comme dans la STL...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public class Pair<T1, T2>
    {
        public Pair(T1 first, T2 second)
        {
            this.First = first;
            this.Second = second;
        }
     
        public T1 First {get; set;}
        public T2 Second {get; set;}
     
        // si besoin réimplémenter les opérateurs etc...
    }

  10. #10
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Citation Envoyé par ced600 Voir le message
    Donc c'est de la bidouille. Il y en a d'autre pour ce genre de cas :
    - Renvoyer un objet.
    - Renvoyer une structure.
    - Renvoyer 1 variable et modifier l'autre dans la fonction.
    - Renvoyer un tableau.
    - Et certainement d'autre.
    Pour moi ce n'est pas une bidouille, c'est simplement un moyen. Bidouille me donne une impression de quelquechose de sale. Ici ce n'est qu'une solution, elle n'est peut-être pas aussi élégante que des passages par référence, mais n'a pas à rougir face aux autres solutions que tu proposes.
    Pour moi, c'est une solution rapide et acceptable : "je dois renvoyer deux valeurs pour cette fonction, il existe un objet fait pour stocker deux valeurs, j'utilise l'objet en question. Fin de la reflexion."

    tomlev a aussi raison mais n'a pas lu le premier post
    PS: inutil de me preciser que je peux la reimplementer moi-même.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  11. #11
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Citation Envoyé par SaumonAgile Voir le message
    Pour moi ce n'est pas une bidouille, c'est simplement un moyen. Bidouille me donne une impression de quelquechose de sale. Ici ce n'est qu'une solution, elle n'est peut-être pas aussi élégante que des passages par référence, mais n'a pas à rougir face aux autres solutions que tu proposes.
    Pour moi, c'est une solution rapide et acceptable : "je dois renvoyer deux valeurs pour cette fonction, il existe un objet fait pour stocker deux valeurs, j'utilise l'objet en question. Fin de la reflexion."

    tomlev a aussi raison mais n'a pas lu le premier post
    Bah en fait le passage par référence je le trouve propre et le reste je vois cela comme de la bidouille.
    Enfin question de gout et de couleur, inutile que l'on débate dessus d'ailleurs.

    Mais bon le passage de variable par référence pour moi existe pour éviter que l'on est à créer un conteneur pour renvoyer plusieurs valeur.
    Limite conservant la valeur de retour uniquement comme moyen de savoir si la fonction s'est exécuté correctement.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  12. #12
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Citation Envoyé par ced600 Voir le message
    Limite conservant la valeur de retour uniquement comme moyen de savoir si la fonction s'est exécuté correctement.
    Et les exceptions, alors !!
    /me a trop vu de fonctions catchant tout et renvoyant true si aucune exception n'a été levée
    ಠ_ಠ

  13. #13
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    tomlev a aussi raison mais n'a pas lu le premier post
    Oups

  14. #14
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Citation Envoyé par Guulh Voir le message
    Et les exceptions, alors !!
    /me a trop vu de fonctions catchant tout et renvoyant true si aucune exception n'a été levée
    Une fonction peu considérer que ce qu'elle doit faire ne s'est pas fait correctement sans pour autant qu'il y ai eu une exception levée.
    Alors deux choix d'implémentation :
    1) levée son exception.
    2) renvoyer une valeur d'erreur.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  15. #15
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Citation Envoyé par ced600 Voir le message
    Une fonction peut considérer que ce qu'elle doit faire ne s'est pas fait correctement sans pour autant qu'il y ait eu une exception levée.
    Alors deux choix d'implémentation :
    1) lever son exception.
    2) renvoyer une valeur d'erreur.
    Certes, je voulais seulement dire que les exceptions sont bien plus puissantes et moins source d'erreur que les codes d'erreur à la C (errno ), et que je pleure des larmes de sang quand je vois du code qui fait un catch(Exception e) { return false;} dans une appli de prod. A part des fonctions style TryGetValue des Dictionary qui en plus de son traitement renvoie true si elle a un entrant ayant la clé donné, la plupart des méthodes du framework signalent un comportement inhabituel (plus précisément ingérable) par une exception plutôt que par un booléen / une enum de retour.
    ಠ_ಠ

  16. #16
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    catch(Exception e) { return false;}
    on a du demander au gars de faire une application qui ne plante pas
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 13/03/2006, 17h45
  2. Réponses: 4
    Dernier message: 08/03/2006, 19h07
  3. acces a uneressource bitmap depuis une classe
    Par firejocker dans le forum MFC
    Réponses: 9
    Dernier message: 03/02/2006, 21h48
  4. Réponses: 14
    Dernier message: 15/12/2005, 18h46
  5. Référence à un objet existant depuis une classe
    Par Adrenalys dans le forum ASP
    Réponses: 2
    Dernier message: 21/07/2005, 00h44

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