Содержание
- 2. Темы занятия Свойства Индексаторы Экземплярные конструкторы Инициализация объектов
- 3. Свойства Согласно принципу инкапсуляции, поля класса должны быть закрытыми. Для обслуживания поля используется либо пара открытых
- 4. Базовый синтаксис свойства модификаторы тип-свойства имя-свойства { get { операторы } set { операторы } }
- 5. Пример свойства – 1 public class Person { private int _age; public int Age { get
- 6. Работа со свойством var p = new Person(); p.Age = 18; // вызывается set-часть свойства var
- 7. Пример свойства – 2 public class Test { // обычно свойство работает с полем, // но
- 8. Трансляция свойств Свойства транслируются при компиляции в методы. В код класса добавляются методы с именами get_Name()
- 9. Модификаторы доступа для get и set В C# разрешено при описании свойства указывать модификаторы доступа для
- 10. Модификаторы доступа для get и set public class Person { private int _age; public int Age
- 11. Read-only и write-only свойства Для свойства можно не указывать акцессор или мутатор: public class Person {
- 12. Read-only свойства Read-only свойство можно записать максимально компактно при помощи стрелочного синтаксиса (C# 6): public class
- 13. Автосвойства – мотив возникновения Часто свойство содержит простой код доступа к полю: public class Person {
- 14. Автосвойства Для упрощения создания таких простых свойств-обёрток, C# предлагает автосвойства (auto properties): public class Person {
- 15. Особенности автосвойств 1. Автосвойству можно дать начальное значение (по сути это начальное значение для соответствующего поля).
- 16. Особенности автосвойств – пример public class Person { public string Name { get; } public int
- 17. Свойство vs метод – best practices Чтение свойства два раза подряд должно возвращать одинаковый результат (идемпотентность).
- 18. Индексаторы Объект может инкапсулировать упорядоченный набор значений. В этом случае доступ к элементам набора естественно организовать
- 19. Синтаксис объявления индексатора [модификаторы] тип this[параметры] { get-и-set-части } Параметры индексатора задают типы и имена индексов
- 20. Пример простого индексатора public class Student { private readonly int[] _marks = new int[5]; public int
- 21. Использование индексатора При использовании индексатора указывается ссылка на объект и сразу после имени ссылки – значение
- 22. Примеры использования индексатора var student = new Student(); student[1] = 8; student[i:3] = 4; // именованный
- 23. Индексаторы – некоторые нюансы Обычно индексаторы работают с полями-массивами или полями-списками, но это не обязательно. Допустимы
- 24. Примеры (странных) индексаторов public class WeirdIndexers { public int this[params int[] data] { get => data
- 25. Примеры (странных) индексаторов var obj = new WeirdIndexers(); var a = obj[3.5, 1.2]; // второй индексатор,
- 26. Экземплярные конструкторы Экземплярный конструктор (далее – конструктор) служит для создания и инициализации объекта. Выполнение конструктора начинается
- 27. Синтаксис конструктора Синтаксис конструктора похож на синтаксис метода. Имя конструктора всегда совпадает с именем класса, а
- 28. Пример класса с конструктором public class Person { public int Age { get; } public string
- 29. Использование конструктора // использование конструктора - операция new var john = new Person(18, "John"); var mary
- 30. Экземплярные конструкторы Класс может содержать несколько конструкторов, которые обязаны различаться сигнатурой. Конструктор может вызвать другой конструктор
- 31. Класс с двумя конструкторами public class Person { public string Name { get; } public Person(string
- 32. Конструктор по умолчанию Если программист не описал в классе собственный конструктор, компилятор автоматически создаёт в классе
- 33. Инициализация объекта Часто работа с объектом начинается с вызова конструктора и установки public-элементов объекта: var obj
- 35. Скачать презентацию