Overblog Suivre ce blog
Editer l'article Administration Créer mon blog

Présentation

  • : Romagny13 - Du .NET,du pur .NET
  • Romagny13 - Du .NET,du pur .NET
  • : Cycle de progression Faire (quelque chose qui marche) -> comprendre ce que l’on fait/comment cela marche -> pousser plus loin les notions
  • Contact

Recherche

Articles Récents

6 mai 2007 7 06 /05 /mai /2007 16:56
[.NET 2.0] - Tour d’horizon des membres des générics
System.Collections.Generic.List
 
Sommaire :
·         Ce que j’utilise pour les exemples         
·         I - Ajout              
·         II - Modification              
·         III - Suppression             
·         IV - Consultation            
·         V – Chercher/Trouver 
·         VI – trier            
·         VII – Conversions          
·         VIII – autres     
Ce que j’utilise pour les exemples
Code de la form principal
private void Form1_Load(object sender, EventArgs e)
        {
            oContacts = new ContactCollection();
            oContacts.Add(new Contact(1, "Dupond", "Julien", "jdupond@hotmail.fr"));
            oContacts.Add(new Contact(2, "Martin", "Pierre", "pmartin@hotmail.fr"));
            oContacts.Add(new Contact(3, "Bellin", "Marie", "mb3@yahoo.fr"));
            oContacts.Add(new Contact(4, "Durand", "Paul", "durand1006@voila.fr"));
            oContacts.Add(new Contact(5, "Suisse", "André", "andre05@voila.fr"));
 
        }
 
+ Le prédicat employé tout au long des exemples
        private bool StartWith(Contact oContact)
        {
            bool bResult = false;
 
                if (oContact.Name.StartsWith("D"))
                {
                    bResult = true;
                }
                else
                {
                    bResult = false;
                }
            return bResult;
        }
 
La classe collection ContactCollection (j’emploie ici une classe collection héritant de System.Collections.Generic.List – mais on peut employer une liste de la même manière)
using System;
using System.Collections.Generic;
using System.Text;
 
namespace EtudeCollectionsGeneriques
{
    public class ContactCollection : System.Collections.Generic.List<Contact>
    {
    }
}
 
La classe Contact
using System;
using System.Collections.Generic;
using System.Text;
 
namespace EtudeCollectionsGeneriques
{
    public class Contact : IComparable<Contact>
    {
        private int _ID;
        private string _Name;
        private string _FirstName;
        private string _Email;
 
        public Contact()
        {
        }
        public Contact(int ID, string Name, string FirstName, string Email)
        {
            this.ID = ID;
            this.Name = Name;
            this.FirstName = FirstName;
            this.Email = Email;
        }
 
        public int ID
        {
            get { return _ID; }
            set { _ID = value; }
        }
        public string Name
        {
            get { return _Name; }
            set { _Name = value; }
        }
        public string FirstName
        {
            get { return _FirstName; }
            set { _FirstName = value; }
        }
        public string Email
        {
            get { return _Email; }
            set { _Email = value; }
        }
 
        public override string ToString()
        {
 
            return this.ID.ToString() + " " + this.Name + " " + this.FirstName + " " + this.Email;
        }
 
 
        public class ContactNameComparer : System.Collections.Generic.IComparer<Contact>
        {
            public SorterMode SorterMode;
            public ContactNameComparer()
            { }
            public ContactNameComparer(SorterMode SorterMode)
            {
                this.SorterMode = SorterMode;
            }
            #region IComparer<Contact> Membres
            int System.Collections.Generic.IComparer<Contact>.Compare(Contact x, Contact y)
            {
                if (SorterMode == SorterMode.Ascending)
                {
                    return y.Name.CompareTo(x.Name);
                }
                else
                {
                    return x.Name.CompareTo(y.Name);
                }
            }
            #endregion
        }
 
        #region IComparable<Contact> Membres
 
        public int CompareTo(Contact other)
        {
 
            return this.ID.CompareTo(other.ID);
        }
 
        #endregion
    }
}
 
 
I - Ajout
A – Ajouter un élément à la collection
1 – Add()
Permet d’ajouter un élément à la collection
            // 1 on crée un objet
            Contact oContact;
            oContact=new Contact(9,"Leneuf","Jean-pierre","neuf9@hotmail.com");
            // 2 on ajoute l'objet à la collection
            oContacts.Add(oContact);
Variante :
            // 1 on crée un objet
            Contact oContact;
            oContact=new Contact();//
            oContact.ID = 9;
            oContact.Name = "Leneuf";
            oContact.FirstName = "Jean-pierre";
            oContact.Email = "neuf9@hotmail.com");
            // 2 on ajoute l'objet à la collection
            oContacts.Add(oContact);
Ou encore plus rapide :
            oContacts = new ContactCollection();
            oContacts.Add(new Contact(1, "Dupond", "Julien", "jdupond@hotmail.fr"));
            oContacts.Add(new Contact(2, "Martin", "Pierre", "pmartin@hotmail.fr"));
 
2 – Insert()
            // insérer un element à l'index spécifié
            oContacts.Insert(2, new Contact(8, "Perrot", "Alphonse", "aperrot@hotmail.fr"));
 
B – Ajout de collection à la collection
1 – AddRange()
Permet d’ajouter une collection (de même type) à la collection
            // 1 on crée une collection
            ContactCollection oRangeContacts;
            oRangeContacts = new ContactCollection();
            oRangeContacts.Add(new Contact(6, "Cossin", "Luc", "cossinluc@laposte.net"));
            oRangeContacts.Add(new Contact(7, "Mars", "Julie", "mars13@hotmail.fr"));
            // 2 on ajoute la collection à la collection
            oContacts.AddRange(oRangeContacts);
 
2– InsertRange()
            //
            ContactCollection oRangeContacts;
            oRangeContacts = new ContactCollection();
            oRangeContacts.Add(new Contact(6, "Cossin", "Luc", "cossinluc@laposte.net"));
            oRangeContacts.Add(new Contact(7, "Mars", "Julie", "mars13@hotmail.fr"));
           // On insère à la position 2 les nouveaux éléments
            oContacts.InsertRange(2, oRangeContacts);
 
II - Modification
Modifier un élément de la collection
Il faut :
1 – trouver / déterminer l’élément à modifier  (avec les méthodes Find(),FindLast(),etc.)
2 – appliquer les modifications à l’élément
Soit en accédant à l’élément directement
            Contact oContact = oContacts.Find(StartWith);
            oContact.Name = "Gaston";
 
Soit en passant par l’index de la collection
            oContacts[2].Name = "Gaston";
 
III - Suppression
1 – Remove()
1 – déterminer l’élément à supprimer
2 – faire appel à la méthode remove() de la collection en passant cet élément
             oContacts.Remove(oContacts.FindLast(StartWith));
 
2 – RemoveAt() – pour supprimer l’élément à l’index de la collection spécifié
            oContacts.RemoveAt(1);
 
3 – RemoveAll() – supprimer tous les éléments de la collection respectant un prédicat
            oContacts.RemoveAll(StartWith);
 
4 – RemoveRange() – supprimer des éléments de la collection sur une plage
            // supprime 3 contacts à partir de l’index 2 de la collection de contacts
            oContacts.RemoveRange(2, 3);
 
5 – Clear() – supprimer tous les éléments de la collection
            // 6 Clear() : supprime tous les éléments de la collection
            oContacts.Clear();
 
 
IV - Consultation
1 – Boucles for et foreach
            foreach (Contact oContact in oContacts)
            {
           
            }
 
            for (int nCount = 0; nCount <= oContacts.Count - 1; nCount++)
            {
           
            }
 
2 – GetEnumerator()
            string smessage = string.Empty;
            IEnumerator<Contact> oContactsEnumerator = oContacts.GetEnumerator();
            while (oContactsEnumerator.MoveNext())
            {
                smessage += oContactsEnumerator.Current.ToString() + Environment.NewLine;
 
            }

Partager cet article

Repost 0
Published by Romagny13 - dans C 1.0- 2.0- 3.0
commenter cet article

commentaires