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 :

[collection] Type anonyme + IEnumerable


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Par défaut [collection] Type anonyme + IEnumerable
    Hello,
    je cherche a initialiser une collection d'une manière specifique.

    Pour l'exemple :
    J'aimerais lui donner des entrées de départ grace au constructeur suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public List(IEnumerable<T> collection)
    Y a t il un moyen de faire l'initialisation avec un type anonyme qui serais IEnumerable ?:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new List<int>( new {1,2,3,4,5});
    Le but est d'utiliser le constructeur cité sans déclarer une autre collection prealablement.

    Comment faire.
    Merci

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Je suis pas sur d'avoir compris, c'est un truc comme ça que tu cherches à faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            List<List<int>> lstInt = new List<List<int>>() {
              { new List<int>(){ 1,5,6,6 } },
              { new List<int>(){ 2,5,4,9 } }
            };

  3. #3
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Par défaut
    en fait, c est ca que je voulais faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    new List<int>() { 23, 34 }
    je croyais que je devais passer par le 3eme constructeur (celui que je cite), et je ne savais pas comment initialiser de cette manière.

    merci

  4. #4
    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 : 44
    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
    Pourquoi pas ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new List<int>(new int[]{23, 34})
    Un tableau implémente IEnumerable<T>, donc ça devrait faire l'affaire... ou alors j'ai pas bien compris ce que tu voulais

  5. #5
    Membre émérite
    Inscrit en
    Octobre 2006
    Messages
    587
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2006
    Messages : 587
    Par défaut
    Bonjour,

    Citation Envoyé par tomlev Voir le message
    Un tableau implémente IEnumerable<T>, donc ça devrait faire l'affaire.
    Sinon on pourrait pas faire un foreach dessus... mais je crois que c'est plutôt un IEnumerable au lieu de IEnumerable<T>.

    Citation Envoyé par ZaaN Voir le message
    Y a t il un moyen de faire l'initialisation avec un type anonyme qui serais IEnumerable ?:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new List<int>( new {1,2,3,4,5});
    Normalement ça devrait fonctionner vu que 1,2,3,4,5 sont des int.

  6. #6
    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 : 44
    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 harz62 Voir le message
    Bonjour,


    Sinon on pourrait pas faire un foreach dessus... mais je crois que c'est plutôt un IEnumerable au lieu de IEnumerable<T>.


    Normalement ça devrait fonctionner vu que 1,2,3,4,5 sont des int.
    En fait, la classe Array implémente IEnumerable, et pas IEnumerable<T>. Mais les tableaux d'un type particulier (comme int[]) implémentent bien IEnumerable<T> :
    Citation Envoyé par MSDN
    Important Note:
    In the .NET Framework version 2.0, the Array class implements the System.Collections.Generic.IList<T>, System.Collections.Generic.ICollection<T>, and System.Collections.Generic.IEnumerable<T> generic interfaces. The implementations are provided to arrays at run time, and therefore are not visible to the documentation build tools. As a result, the generic interfaces do not appear in the declaration syntax for the Array class, and there are no reference topics for interface members that are accessible only by casting an array to the generic interface type (explicit interface implementations). The key thing to be aware of when you cast an array to one of these interfaces is that members which add, insert, or remove elements throw NotSupportedException.

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

Discussions similaires

  1. Linq, type anonyme et redondance
    Par neptune dans le forum Framework .NET
    Réponses: 2
    Dernier message: 25/06/2008, 10h49
  2. Taille Collection Types
    Par alonso dans le forum SQL
    Réponses: 1
    Dernier message: 11/04/2007, 16h46
  3. Réponses: 8
    Dernier message: 16/01/2007, 11h16
  4. [Collection] type paramétré
    Par GLDavid dans le forum Langage
    Réponses: 4
    Dernier message: 12/06/2006, 11h03
  5. BULK COLLECT ==> TYPE TABLE OF (Cursor Rowtype)
    Par argoet dans le forum Oracle
    Réponses: 5
    Dernier message: 17/05/2005, 16h47

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