Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ProgBasics_lec08_interfaces

.pdf
Скачиваний:
6
Добавлен:
14.04.2015
Размер:
531.15 Кб
Скачать

Типы данных

Тип данных определяет:

допустимые значения

допустимые действия над этими значениями

Виды типов данных

Reference types (ссылочные типы)

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

хранятся в куче (managed heap)

Value types (значимые типы)

описывают местоположения другого значения

могут храниться на стеке

Виды типов данных с точки зрения C#

Reference types

Классы

Object – базовый для всех типов

String – sealed-класс, представляющий строку

Массивы

Интерфейсы

Делегаты

null

Value types

Build-in types (integer, floating-point, numeric, bool)

Структуры

Перечисления

value types

не могут быть базовыми типами

не могут принимать значение null

см. также понятие nullable type

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

присваивание value-переменной, передача в качестве параметра в метод приводят к созданию копии значения

наследники System.ValueType

Структуры

объявление аналогично классу

используется ключевое слово ‘structpublic struct Point

{

public int x, y;

public Point(int x, int y)

{

this.x = x; this.y = y;

}

}

Структуры

• Нельзя объявлять конструктор по-умолчанию

public struct Point

{

public int x, y; public Point()

{

x = 0; y = 0;

}

}

Ошибка

компиляции

Структуры

• Все поля должны быть инициализированы в конструкторе public struct Point

{

public int x, y; public Point(int x)

{

this.x = x; y = 0;

}

}

Usage

• <visual studio sample>

Структуры или классы?

Следует использовать структуры, если:

объекты малы (в пределах 16 байт?)

время жизни объектов довольно короткое

объекты встраиваются в другие объекты

вопрос к разработчику

объект представляет одиночное значение,

например, int, double, Point, и т.д.

объекты неизменяемы (immutable)

объекты не пакуются (boxing) часто

В других случаях - классы

Интерфейсы

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]