none
Инициализаторы объектов и коллекций RRS feed

  • Общие обсуждения

  • Инициализаторы объектов

    Инициализаторы объектов позволяют присваивать значения любым доступным полям или свойствам объекта на момент создания объекта без явного вызова конструктора.

     

    Инициализаторы объектов именованных типов

    Например есть класс Point с двумя автоматически реализуемыми свойствами X и Y (Автоматически реализуемые свойства (Руководство по программированию на C#) )

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

    Когда мы создаем и инициализируем объект класса, это выглядит так:

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

    В Visual C# 3.0 этот же результат можно достигнуть другим более коротким путем, использую инициализатор объекта:

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

    В LINQ можно использовать инициализатор объекта следующим образом: в выражениях запросов часто используются анонимные типы, которые можно инициализировать только с помощью инициализаторов объектов.

    В приведенном ниже примере предполагается, что у объекта продукта (p) имеется множество полей и методов, и требуется создать последовательность объектов, содержащую только имя продукта и его цену.

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

     

    Инициализаторы коллекций

    Инициализаторы коллекций аналогичны по своей концепции с инициализаторами объектов. Они позволяют создать и инициализировать коллекцию за один шаг. Инициализатор коллекций заменяет множественный вызов метода Add для вашего кода.

    Пример:

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

    Фактически, при этом будет сделано следующее:

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

    Требования для использования инициализаторов коллекций:

    • объект коллекции должен реализовывать интерфейс IEnumerable
    • объект должен иметь открытый метод Add()

     

    Для более полной информации читайте: Инициализаторы объектов и коллекций (Руководство по программированию в C#)

     


    Для связи [mail]
    31 января 2011 г. 15:02