LoveRead.info » Книги » Разная литература » Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен

Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен

Книгу Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен читаем онлайн бесплатно полную версию! Чтобы начать читать не надо регистрации. Напомним, что читать онлайн вы можете не только на компьютере, но и на андроид (Android), iPhone и iPad. Приятного чтения!

178 0 18:04, 26-08-2023
Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен
26 август 2023

Книга Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен читать онлайн бесплатно без регистрации

В 10-м издании книги описаны новейшие возможности языка C# 9 и .NET 5 вместе с подробным "закулисным" обсуждением, призванным расширить навыки критического мышления разработчиков, когда речь идет об их ремесле. Книга охватывает ASP.NET Core, Entity Framework Core и многое другое наряду с последними обновлениями унифицированной платформы .NET, начиная с улучшений показателей производительности настольных приложений Windows в .NET 5 и обновления инструментария XAML и заканчивая расширенным рассмотрением файлов данных и способов обработки данных. Все примеры кода были переписаны с учетом возможностей последнего выпуска C# 9.

    1 ... 133 134 135 136 137 138 139 140 141 ... 407
    Перейти на страницу:
    ключом Homer.

        Person homer = peopleA["Homer"];

        Console.WriteLine(homer);

        // Наполнить с помощью синтаксиса инициализации.

        Dictionary<string, Person> peopleB = new Dictionary<string, Person>()

        {

            { "Homer", new Person { FirstName = "Homer",

                                    LastName = "Simpson", Age = 47 } },

            { "Marge", new Person { FirstName = "Marge",

                                    LastName = "Simpson", Age = 45 } },

            { "Lisa", new Person { FirstName = "Lisa",

                                   LastName = "Simpson", Age = 9 } }

        };

        // Получить элемент с ключом Lisa.

        Person lisa = peopleB["Lisa"];

        Console.WriteLine(lisa);

    }

    Наполнять Dictionary<TKey,TValue> также возможно с применением связанного синтаксиса инициализации, который является специфичным для контейнера данного типа (вполне ожидаемо называемый инициализацией словарей). Подобно синтаксису, который использовался при наполнении объекта personB в предыдущем примере, для объекта коллекции определяется область инициализации; однако можно также применять индексатор, чтобы указать ключ, и присвоить ему новый объект:

    // Наполнить с помощью синтаксиса инициализации словарей.

    Dictionary<string, Person> peopleC = new Dictionary<string, Person>()

    {

        ["Homer"] = new Person { FirstName = "Homer",

                                 LastName = "Simpson", Age = 47 },

        ["Marge"] = new Person { FirstName = "Marge",

                                 LastName = "Simpson", Age = 45 },

        ["Lisa"] = new Person { FirstName = "Lisa",

                                LastName = "Simpson", Age = 9 }

    };

    Пространство имен System.Collections.ObjectModel

    Теперь, когда вы понимаете, как работать с основными обобщенными классами, можно кратко рассмотреть дополнительное пространство имен, связанное с коллекциями — System.Collections.ObjectModel. Это относительно небольшое пространство имен, содержащее совсем мало классов. В табл. 10.7 документированы два класса, о которых вы обязательно должны быть осведомлены.

    Класс ObservableCollection<T> удобен своей возможностью информировать внешние объекты, когда его содержимое каким-то образом изменяется (как и можно было догадаться, работа с ReadOnlyObservableCollection<T> похожа, но по своей природе допускает только чтение).

    Работа с классом ObservableCollection<T>

    Создайте новый проект консольного приложения по имени FunWithObservableCollections и импортируйте в первоначальный файл кода C# пространство имен System.Collections.ObjectModel. Во многих отношениях работа с ObservableCollection<T> идентична работе с List<T>, учитывая, что оба класса реализуют те же самые основные интерфейсы. Уникальным класс ObservableCollection<T> делает тот факт, что он поддерживает событие по имени CollectionChanged. Указанное событие будет инициироваться каждый раз, когда вставляется новый элемент, удаляется (или перемещается) существующий элемент либо модифицируется вся коллекция целиком.

    Подобно любому другому событию событие CollectionChanged определено в терминах делегата, которым в данном случае является NotifyCollectionChangedEventHandler. Этот делегат может вызывать любой метод, который принимает object в первом параметре и NotifyCollectionChangedEventArgs — во втором. Рассмотрим следующий код, в котором наполняется наблюдаемая коллекция, содержащая объекты Person, и осуществляется привязка к событию CollectionChanged:

    using System;

    using System.Collections.ObjectModel;

    using System.Collections.Specialized;

    using FunWithObservableCollections;

    // Сделать коллекцию наблюдаемой

    // и добавить в нее несколько объектов Person.

    ObservableCollection<Person> people = new ObservableCollection<Person>()

    {

      new Person{ FirstName = "Peter", LastName = "Murphy", Age = 52 },

      new Person{ FirstName = "Kevin", LastName = "Key", Age = 48 },

    };

    // Привязаться к событию CollectionChanged.

    people.CollectionChanged += people_CollectionChanged;

    static void people_CollectionChanged(object sender,

        System.Collections.Specialized.NotifyCollectionChangedEventArgs e)

    {

      throw new NotImplementedException();

    }

    Входной параметр NotifyCollectionChangedEventArgs определяет два важных свойства, OldIterns и NewItems, которые выдают список элементов, имеющихся в коллекции перед генерацией события, и список новых элементов, вовлеченных в изменение. Тем не менее, такие списки будут исследоваться только в подходящих обстоятельствах. Вспомните, что событие CollectionChanged инициируется при добавлении, удалении, перемещении или сбросе элементов. Чтобы выяснить, какое из упомянутых действий запустило событие, можно использовать свойство Action объекта NotifyCollectionChangedEventArgs. Свойство Action допускается проверять на предмет равенства любому из членов перечисления NotifyCollectionChangedAction:

    public enum NotifyCollectionChangedAction

    {

      Add = 0,

      Remove = 1,

      Replace = 2,

      Move = 3,

      Reset = 4,

    }

    Ниже показана реализация обработчика событий CollectionChanged, который будет обходить старый и новый наборы, когда элемент вставляется или удаляется из имеющейся коллекции (обратите внимание на оператор using для System.Collections.Specialized):

    using System.Collections.Specialized;

    ...

    static void people_CollectionChanged(object sender,

      NotifyCollectionChangedEventArgs e)

    {

      // Выяснить действие, которое привело к генерации события.

      Console.WriteLine("Action for this event: {0}", e.Action);

      // Было что-то удалено.

      if (e.Action == NotifyCollectionChangedAction.Remove)

      {

        Console.WriteLine("Here are the OLD items:");  // старые элементы

        foreach (Person p in e.OldItems)

        {

          Console.WriteLine(p.ToString());

        }

        Console.WriteLine();

      }

      // Было что-то добавлено.

      if (e.Action == NotifyCollectionChangedAction.Add)

      {

        // Теперь вывести новые элементы, которые были вставлены.

        Console.WriteLine("Here are the NEW items:");  // Новые элементы

      foreach (Person p in e.NewItems)

        {

          Console.WriteLine(p.ToString());

        }

      }

    }

    Модифицируйте вызывающий код для добавления и удаления элемента:

    // Добавить новый элемент.

    people.Add(new Person("Fred", "Smith", 32));

    // Удалить элемент.

    people.RemoveAt(0);

    В результате запуска программы вы получите вывод следующего вида:

    Action for this event: Add

    Here are the NEW items:

    Name: Fred Smith, Age: 32

    Action for this event: Remove

    Here are the OLD items:

    Name: Peter Murphy, Age: 52

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

    Создание специальных обобщенных методов

    Несмотря на то что большинство разработчиков обычно применяют обобщенные типы, имеющиеся в библиотеках базовых классов, существует также возможность построения собственных обобщенных методов и

    1 ... 133 134 135 136 137 138 139 140 141 ... 407
    Перейти на страницу:
    1. Жалоба
    Отзывы - 0

    Прочитали книгу? Предлагаем вам поделится своим отзывом от прочитанного(прослушанного)! Ваш отзыв будет полезен читателям, которые еще только собираются познакомиться с произведением.


    Уважаемые читатели, слушатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

    • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
    • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
    • 3. Просьба отказаться от нецензурной лексики.
    • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

    Надеемся на Ваше понимание и благоразумие. С уважением, администратор LoveRead.info.


    Установить VPN и читай слушай бесплатно

    Новые отзывы

    1. Людмила Хофман Людмила Хофман10 июнь 22:13 У меня перевернулся мир после прочтения ваших книг! Так приятно и чисто на душе, ведь по сути неважно кто с кем , а только любовь... Долгая игра - Рейчел Рид
    2. Анна Анна08 июнь 11:28 Спасибо за новую историю жизни и любви на сайте,прочитала с удовольствием .... Давай поженимся - Юлия Резник
    3. Елена Елена08 июнь 11:13 Прочла несколько романов этого, без сомнения, талантливого автора. Впечатление прекрасное, но хотелось бы когда-нибудь прочесть... Предатель. Ты врал мне годами - Арина Арская
    Все комметарии
    Новинки бесплатной онлайн библиотеки