locked
Initialiseurs d'objets et Initialiseur de collection RRS feed

  • Discussion générale

  • Que-est ce qu'un Initialiseur d'objets? Que-est ce qu'un Initialiseur de collection?


    Alex Petrescu - MSFT
    mardi 5 janvier 2010 13:49

Toutes les réponses

  • Initialiseurs d'objets

    Les initialiseurs d’objets offrent un moyen pour affecter des valeurs pour tous les champs ou les propriétés accessibles d'un objet au moment de la création, sans avoir à appeler explicitement un constructeur.


    Initialiseurs avec des types nommés

    Ici, nous utilisons les propriétés implémentées automatiquement présentes dans Visual C# 3.0 pour définir une classe.  Pour plus d'informations sur les propriétés implémentées automatiquement, veuillez vérifier Propriétés implémentées automatiquement (Guide de programmation C#)


    public class Point
    {
        public int X { get; set; }
        public int Y { get; set; }
    }

     


    Lorsqu'on instancie les objets d'une classe Point, on peut utiliser:

    Point p = new Point()
    p.X = 0;
    p.Y = 0; 


    Dans Visual C# 3.0, il existe un moyen court pour obtenir les mêmes résultats : 

    Point p = new Point { X = 0, Y = 1 }; 

     

    L'exemple suivant montre comment nous pouvons utiliser initialiseur d'objet nommé avec LINQ.  L'exemple suppose qu'un objet contient de nombreuses méthodes relies à un produit et les champs, mais nous sommes seulement intéressés dans la création d'une séquence d'objets qui contiennent le nom de produit et le prix unitaire.

     

    var productInfos = from p in products
             select new { ProductName = p.ProductName, UnitPrice = p.UnitPrice };



     

    Initialiseur de collection

     

    L’initialiseur de collection est un concept similaire aux initialiseurs d’objets.  Ils permettent de créer et initialiser une collection en une seule étape.  En utilisant un initialiseur de collection vous n'avez pas a spécifier plusieurs appels de la méthode Add de la classe dans votre code source ; le compilateur ajoute les appels.

     

    List<int> numbers = new List<int> { 1, 100, 100 };

     

    En fait, c'est la forme abrégée des éléments suivants :

     

    List<int> numbers = new List<int>();
    numbers.Add(1);
    numbers.Add(10);
    numbers.Add(100);

      

    Remarque:

    Pour pouvoir utiliser un initialiseur de collection sur un objet, l'objet doit satisfaire à ces deux exigences :

            Il doit implémenter l'interface IEnumerable.

            Il doit avoir une méthode publique Add()

     

     

    Pour plus d'informations, consultez Initialiseurs d'objets et de collection (Guide de programmation C#) 

     

    mardi 5 janvier 2010 13:58