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 :

Generics et indexer


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 4
    Par défaut Generics et indexer
    Bonjour à tous,

    Je cherche un moyen de résoudre mon problème mais pour le moment je ne vois pas

    Je créer une classe générique MyClass<T>

    ensuite j'ai fait une propriété indexée sur cette classe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
     public T this[int a,int b]
            {
                get { return _g[a,b]; }
                set { _g[a, b] = value; }
            }
    mais voila plus loin dans cette classe je doit faire cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    T[,] Data = new T[99999999,99999999]
    for (int i = 0; i < 875985; i++)
                {
                    for (int j = 0; j < 22254; j++)
                    {
                        Data[i, j] = 4; // la ce pose le probleme car je ne peut pas affeter 4
                    }
                }
     
    ...
    comment faire ? Merci d'avance


    PS: T doit etre que tu type Int,Double,Float,

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    269
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 269
    Par défaut
    Bonjour,

    Et en castant 4 en T?
    PS: oui je sais c'est moche de caster pour ca.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 4
    Par défaut
    Impossible de le caster en T j'ai déjà essayer

    (T)4; // error

    4 as T; // error

  4. #4
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    269
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 269
    Par défaut
    Ah oui c'est vrai que le compilo est chiant pour ca, mais y'a une solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Data[i, j] = (T)(object)4;
    Bon par contre c'est encore plus moche qu'un simple cast.

  5. #5
    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 : 43
    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
    Par défaut
    Citation Envoyé par antoine.debyser Voir le message
    Ah oui c'est vrai que le compilo est chiant pour ca, mais y'a une solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Data[i, j] = (T)(object)4;
    Oui mais non... (object)4 va boxer une valeur Int32, et si tu essayes de l'unboxer vers un type autre que Int32, ça va péter.

    Comme ça, ça devrait le faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Data[i, j] = (T)Convert.ChangeType(4, typeof(T));
    Soit dit en passant, l'indexeur n'a rien à voir dans l'affaire, le code que tu as posté ne l'utilise même pas

  6. #6
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    269
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 269
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Oui mais non... (object)4 va boxer une valeur Int32, et si tu essayes de l'unboxer vers un type autre que Int32, ça va péter.

    Comme ça, ça devrait le faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Data[i, j] = (T)Convert.ChangeType(4, typeof(T));
    C'est exactement pour ça que je dis que c'est moche.
    Je connaissais pas ChangeType, et du coup question vu que ChangeType retourne un object y'a boxing aussi?
    Et dans le cas où "4" ne peut être converti en T y'a une exception aussi.
    Du coup ça apportes quoi, a part faire appel à 1-n méthode en plus?

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

Discussions similaires

  1. Message 'Duplicate index entry'
    Par Poulou dans le forum Administration
    Réponses: 13
    Dernier message: 04/05/2004, 14h57
  2. Index n'est pas a jour
    Par touhami dans le forum Paradox
    Réponses: 5
    Dernier message: 11/12/2002, 14h47
  3. [Technique] Intérêt des index
    Par ddams dans le forum Décisions SGBD
    Réponses: 10
    Dernier message: 04/11/2002, 15h11
  4. [Technique] Index, comment font les moteurs de recherche ?
    Par bat dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 25/10/2002, 15h41
  5. Requête imbriquée et indexes INTERBASE
    Par vadim dans le forum InterBase
    Réponses: 2
    Dernier message: 06/09/2002, 16h15

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