5
C#. Классы и объекты
6
C#. Классы и объекты
7
C#. Статические поля и методы
8
C#. Статические поля и методы
-
Назначение статических полей класса и статических методов одинаковое и в С++ и в Java и в C#.
-
Статические поля класса - это поля, значения которых для каждого экземпляра класса (объекта) одинаковы (создаются статические поля отдельно от создания объекта), а статические методы предназначены для работы со статическими полями. Статический метод ссылку this не получает и поэтому обращаться к нестатическим членам класса не может. Для доступа к обычному члену класса необходимо создать объект класса, а для доступа к статическому элементу можно воспользоваться именем класса.
-
Так как в C# и в Java отсутствуют глобальные переменные и константы, то все объявления должны находиться внутри классов. В результате часто образуются классы, состоящие исключительно из статических членов. Необходимость в создании экземпляров у таких классов полностью отсутствует, так как статические поля и методы можно вызвать через имя класса. Чтобы запретить создание экземпляров данного класса создают закрытый конструктор (см. Пример 2 на слайде).
9
C#. Массивы объектов. Интерфейс IComparable
-
Пример 3. Сортировка массива объектов
10
C#. Массивы объектов. Интерфейс IComparable
-
Пример 3. Сортировка массива объектов
11
C#. Массивы объектов. Интерфейс IComparer
-
Пример 4. Сортировка массива объектов
12
C#. Массивы объектов. Интерфейс IComparer
-
Пример 4. Сортировка массива объектов
13
C#. Массивы объектов. Интерфейс IComparer
-
Пример 4. Сортировка массива объектов
14
C#. Структуры
-
Описание структуры:
-
[ Модификатор доступа ] struct ИмяСтруктуры
-
{ // члены структуры – поля и методы
-
Модификатор доступа Тип имяПоля ;
-
Модификатор доступа Тип имяМетода (Параметры) {
-
// тело метода }
-
}
-
Модификаторы доступа для членов структуры: public , internal, private
-
Доступом по умолчанию для членов структуры является private
-
Создание экземпляра структуры:
-
ИмяСтруктуры имяОбъекта; // неявный вызов конструктора по умолчанию
-
ИмяСтруктуры имяОбъекта = new ИмяСтруктуры(); // явный вызов
-
ИмяСтруктуры имяОбъекта = new ИмяСтруктуры([ параметры конструктора]);
-
Доступ к полям и методам объекта:
-
имяОбъекта.имяПоля = значение;
-
ИмяОбъекта.имяМетода(параметры);
15
C#. Структуры
-
Структура – это тип данных, аналогичный классу, но имеющий ряд важных отличий от него:
-
структуры не могут иметь родителей в виде классов или других структур, но могут реализовывать интерфейсы;
-
неявным родителем любой структуры является класс Object, поэтому в структуре действуют все методы этого класса;
-
структура не может иметь наследников;
-
в отличие от классов, структуры относятся к значимым типам.
-
Значимые типы размещаются в стеке, поэтому доступ к экземплярам структур реализуется быстрее, чем к экземплярам класса (объектам). Отсюда можно сделать вывод: если у класса относительно немного полей, но в программе предполагается использовать множество объектов, полезно реализовать такой класс как структуру.
-
Замечание. Строго говоря любой значимый тип С# является структурным.
-
Описание структуры схоже с описанием класса.
-
Как и любой класс, структура неявно снабжается конструктором по умолчанию (конструктором без параметров). Его назначение - выделить экземпляру структуры память в стеке. В отличие от классов, этот конструктор нельзя перекрыть (создать явно конструктор без параметров).
-
Неявный вызов конструктора по умолчанию не приводит к инициализации полей структуры значениями по умолчанию. Для инициализации полей структуры значениями по умолчанию его нужно вызвать явно.
-
При присваивании экземпляров структур создается копия значений полей. То же самое происходит и при передачи экземпляров структур в качестве параметра по значению. Для экономии ресурсов ничто не мешает передавать структуры в методы по ссылке с помощью ключевых слов ref или out.
16
C#. Структуры
17
C#. Структуры
18
Контрольные вопросы
-
Понятие класса. Синтаксис описания класса в С#. Модификаторы доступа: характеристика и примеры использования.
-
Понятие объекта. Создание и уничтожение объектов в С#. Доступ к полям и методам объекта в С#. Конструкторы: назначение и типы. Примеры.
-
С#. Статические поля и методы: назначение и примеры использования.
-
Массивы объектов в С#. Сортировка массива объектов. Примеры.
-
С#. Структуры: назначение, отличие от классов, примеры использования.
19