Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен
Понятие массивов C#
Синтаксис инициализации массивов C#
Понятие неявно типизированных локальных массивов
Определение массива объектов
Работа с многомерными массивами
Использование массивов в качестве аргументов и возвращаемых значений
Использование базового класса System.Array
Использование индексов и диапазонов (нововведение в версии 8.0)
Понятие методов
Члены, сжатые до выражений
Локальные функции (нововведение в версии 7.0, обновление в версии 9.0)
Статические локальные функции (нововведение в версии 8.0)
Понятие параметров методов
Модификаторы параметров для методов
Стандартное поведение передачи параметров
Стандартное поведение для типов значений
Стандартное поведение для ссылочных типов
Использование модификатора out (обновление в версии 7.0)
Отбрасывание параметров out (нововведение в версии 7.0)
Модификатор out в конструкторах и инициализаторах (нововведение в версии 7.3)
Использование модификатора ref
Использование модификатора in (нововведение в версии 7.2)
Использование модификатора params
Определение необязательных параметров
Использование именованных параметров (обновление в версии 7.2)
Понятие перегрузки методов
Понятие типа enum
Управление хранилищем, лежащим в основе перечисления
Объявление переменных типа перечисления
Использование типа System.Enum
Динамическое обнаружение пар "имя-значение" перечисления
Использование перечислений, флагов и побитовых операций
Понятие структуры (как типа значения)
Создание переменных типа структур
Использование структур, допускающих только чтение (нововведение в версии 7.2)
Использование членов, допускающих только чтение (нововведение в версии 8.0)
Использование структур ref (нововведение в версии 7.2)
Использование освобождаемых структур ref (нововведение в версии 8.0)
Типы значений и ссылочные типы
Использование типов значений ссылочных типов и операции присваивания
Использование типов значений, содержащих ссылочные типы
Передача ссылочных типов по значению
Передача ссылочных типов по ссылке
Заключительные детали относительно типов значений и ссылочных типов
Понятие типов С#, допускающих null
Использование типов значений, допускающих null
Использование ссылочных типов, допускающих null (нововведение в версии 8.0)
Включение ссылочных типов, допускающих null
Ссылочные типы, допускающие null, в действии
Рекомендации по переносу кода
Работа с типами, допускающими значение null
Операция объединения с null
Операция присваивания с объединением с null (нововведение в версии 8.0)
null-условная операция
Понятие кортежей (нововведение и обновление в версии 7.0)
Начало работы с кортежами
Использование выведенных имен переменных (обновление в версии C# 7.1)
Понятие эквивалентности/неэквивалентности кортежей (нововведение в версии 7.3)
Использование отбрасывания с кортежами
Использование отбрасывания с кортежами
Использование выражений switch с сопоставлением с образцом для кортежей (нововведение в версии 8.0)
Деконструирование кортежей
Деконструирование кортежей с позиционным сопоставлением с образцом (нововведение в версии 8.0)
Резюме
Часть III
Глава 5
Знакомство с типом класса C#
Размещение объектов с помощью ключевого слова new
Понятие конструкторов
Роль стандартного конструктора
Определение специальных конструкторов
Конструкторы в виде членов, сжатых до выражений (нововведение в версии 7.0)
Конструкторы с параметрами out (нововведение в версии 7.3)
Еще раз о стандартном конструкторе
Роль ключевого слова this
Построение цепочки вызовов конструкторов с использованием this
Исследование потока управления конструкторов
Еще раз о необязательных аргументах
Понятие ключевого слова static
Определение статических полей данных
Определение статических методов
Определение статических конструкторов
Определение статических классов
Импортирование статических членов с применением ключевого слова using языка C#
Основные принципы объектно-ориентированного программирования
Роль инкапсуляции
Роль наследования
Роль полиморфизма
Модификаторы доступа C# (обновление в версии 7.2)
Использование стандартных модификаторов доступа
Использование модификаторов доступа и вложенных типов
Первый принцип объектно-ориентированного программирования: службы инкапсуляции C#
Инкапсуляция с использованием традиционных методов доступа и изменения
Инкапсуляция с использованием свойств
Свойства как члены, сжатые до выражений (нововведение в версии 7.0)
Использование свойств внутри определения класса
Свойства, допускающие только чтение
Свойства, допускающие только запись
Смешивание закрытых и открытых методов get/set в свойствах
Еще раз о ключевом слове static: определение статических свойств
Сопоставление с образцом и шаблоны свойств (нововведение в версии 8.0)
Понятие автоматических свойств
Взаимодействие с автоматическими свойствами
Автоматические свойства и стандартные значения
Инициализация автоматических свойств
Понятие инициализации объектов
Обзор синтаксиса инициализации объектов
Использование средства доступа только для инициализации (нововведение в версии 9.0)
Вызов специальных конструкторов с помощью синтаксиса инициализации
Инициализация данных с помощью синтаксиса инициализации
Работа с константными полями данных и полями данных, допускающими только чтение
Понятие константных полей данных
Понятие полей данных, допускающих только чтение
Понятие статических полей, допускающих только чтение
Понятие частичных классов
Использование записей (нововведение в версии 9.0)
Эквивалентность с типами записей
Копирование типов записей с использованием выражений with
Резюме
Глава 6
Базовый механизм наследования
Указание родительского класса для существующего класса
Замечание относительно множества базовых классов
Использование ключевого слова sealed
Еще раз о диаграммах классов Visual Studio
Второй принцип объектно-ориентированного программирования: детали наследования
Вызов конструкторов базового класса с помощью ключевого слова base
Хранение секретов семейства: ключевое слово protected
Добавление запечатанного класса
Наследование с типами записей (нововведение в версии 9.0)
Эквивалентность с унаследованными типами записей
Реализация модели включения/делегации
Определения вложенных типов
Третий принцип объектно-ориентированного программирования: поддержка полиморфизма в C#
Использование ключевых слов virtual и override