Особенности C# Индексаторы, события, частичные методы, расширяющие методы, сборщик мусора DraggonZ

Содержание

Слайд 2

Индексаторы

Индексаторы

Слайд 3

Индексатор позволяет индексировать элемент подобно массиву

Индексатор позволяет индексировать элемент подобно массиву

Слайд 4

Синтаксис тип_элемента this[int индекс] { // Аксессор для получения данных, get

Синтаксис

тип_элемента this[int индекс] {
// Аксессор для получения данных,
get {


// Возврат значения, которое определяет индекс.
}
// Аксессор для установки данных,
set {
// Установка значения, которое определяет индекс.
}
}
Слайд 5

Частичные типы

Частичные типы

Слайд 6

Использует ключевое слово partial Применяется для разнесения одного класса, интерфейса, структуры по разным файлам

Использует ключевое слово partial Применяется для разнесения одного класса, интерфейса, структуры по

разным файлам
Слайд 7

Расширяющие методы

Расширяющие методы

Слайд 8

Расширяющие методы позволяют существующим типам получать новую функциональность без необходимости непосредственного изменения расширяемого типа

Расширяющие методы позволяют существующим типам получать новую функциональность без необходимости непосредственного

изменения расширяемого типа
Слайд 9

Синтаксис static class MyExtensions { public static возвращаемое_значение ExtensionMethod(this тип_объекта объект,…)

Синтаксис

static class MyExtensions
{
public static возвращаемое_значение ExtensionMethod(this тип_объекта объект,…)
{
//Определение

расширяющего метода
}
}
Слайд 10

Расширяющие методы являются синонимами обычных статических методов

Расширяющие методы являются синонимами обычных статических методов

Слайд 11

Сборщик мусора

Сборщик мусора

Слайд 12

Сборщик мусора удаляет объект из кучи тогда, когда тот становится недостижимым

Сборщик мусора удаляет объект из кучи тогда, когда тот становится недостижимым

ни в одной части программного кода
Слайд 13

Размещение объекта в управляемой куче

Размещение объекта в управляемой куче

Слайд 14

В случае нехватки в управляемой куче пространства для размещения запрашиваемого объекта начинает выполняться сборка мусора

В случае нехватки в управляемой куче пространства для размещения запрашиваемого объекта

начинает выполняться сборка мусора
Слайд 15

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

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

для хранения очень больших объектов
Слайд 16

Каждый объект в куче относится к одному из перечисленных ниже поколений:

Каждый объект в куче относится к одному из перечисленных ниже поколений: поколение

0: новые объекты; поколение 1: объекты, пережившие 1 сборку мусора; поколение 2: объекты, пережившие более 1 сборки мусора.
Слайд 17

Системный класс System.GC позволяет программно взаимодействовать со сборщиком мусора

Системный класс System.GC позволяет программно взаимодействовать со сборщиком мусора

Слайд 18

События

События

Слайд 19

События строятся с помощью ключевого слова event

События строятся с помощью ключевого слова event

Слайд 20

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

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

для добавления и удаления методов в списке вызовов делегата
Слайд 21

Синтаксис class MyClass { public delegate void MyDelegate(int x); public event MyDelegate MyEvent; }

Синтаксис
class MyClass
{
public delegate void MyDelegate(int x);
public event

MyDelegate MyEvent;
}
Слайд 22

Рекомендуемый шаблон делегата, лежащего в основе события void обработчик(object отправитель, EventArgs e) { // ...

Рекомендуемый шаблон делегата, лежащего в основе события
void обработчик(object отправитель, EventArgs e)

{
// ...
Слайд 23

Для управления списком обработчиков событий служит расширенная форма оператора event, позволяющая использовать аксессоры событий

Для управления списком обработчиков событий служит расширенная форма оператора event, позволяющая

использовать аксессоры событий
Слайд 24

event делегат_события имя_события { add { // Код добавления события в

event делегат_события имя_события { add { // Код добавления события в

цепочку событий. } remove { // Код удаления события из цепочки событий. } }
Слайд 25

Учитывая, что очень много специальных делегатов принимают объект в первом параметре

Учитывая, что очень много специальных делегатов принимают объект в первом параметре

и наследников EventArgs — во втором, часто используется обобщенный тип EventHandler, где Т — специальный тип-наследник EventArgs.