- •1. Введение в ооп
 - •1.1. Этапы развития технологий программирования
 - •1.2. Введение в ооп
 - •2. Понятие класса и объекта класса. Инкапсуляция в c#
 - •2.1. Понятие класса и объекта класса. Создание объектов. Данные и методы класса
 - •2.2. Передача параметров в методы класса
 - •2.3. Конструкторы и деструкторы
 - •2.4. Инкапсуляция в c#
 - •3. Индексаторы и свойства
 - •3.1. Индексаторы
 - •3.2. Свойства
 - •4. Наследование в c#
 - •5. Полиморфизм в c#. Интерфейсы
 - •5.1. Виртуальные методы и их переопределение
 - •5.2. Применение абстрактных классов
 - •5.3. Интерфейсы
 - •6. Система типов языка c#
 - •7. Структуры и перечисления
 - •7.2. Тип структур
 - •8. Операторы и управляющие конструкции языка c#
 - •8.1. Арифметические операторы
 - •8.2. Операторы отношения и логические операторы
 - •8.3. Оператор присваивания
 - •8.4. Оператор ?
 - •8.5. Управляющие операторы
 - •9. Массивы и строки
 - •9.1. Массивы в c#
 - •9.1.1. Одномерные массивы
 - •9.1.2. Многомерные массивы
 - •9.1.3. Ступенчатые массивы
 - •9.2. Строки
 - •9.2.1. Постоянство строк
 - •10. Платформа .Net. Основные понятия и принципы работы
 - •11. Пространства имен. Сборки
 - •11.1. Пространства имён
 - •11.2. Сборки
 - •12. Время жизни переменных и область видимости переменных. Оператор new и сборка мусора
 - •12.2. Финализация объектов
 - •12.3. Создание высвобождаемых объектов
 - •13. Исключения. Генерация и обработка
 - •13.1. Основы обработки исключительных ситуаций
 - •13.2. Применение пары ключевых слов try и catch
 - •13.3. Генерирование исключений вручную
 - •13.4. Использование блока finally
 - •13.5. Класс Exception и получение производных классов
 - •13.6. Ключевые слова checked и unchecked
 - •14. Обобщения (шаблоны) и их применение в языке c#
 - •15. Основные классы коллекций объектов
 - •15.1. Интерфейсы необобщенных коллекций
 - •15.1.1. Интерфейс iCollection
 - •15.1.2. Интерфейс iList
 - •15.1.3. Интерфейс iDictionary
 - •16. Использование linq для работы с коллекциями
 - •16.1. Простой запрос
 - •16.2. Общая форма запроса
 - •16.3. Сортировка результатов запроса с помощью оператора orderby
 - •16.4 Операторы group, into, let и join
 - •16.5. Методы запроса
 - •16.6. Формирование запроса с помощью методов запроса
 - •Заключение
 - •Оглавление
 - •1. Введение в ооп 3
 - •1.1. Этапы развития технологий программирования 3
 - •1.2. Введение в ооп 11
 - •394026 Воронеж, Московский просп., 14
 
7.2. Тип структур
Теперь рассмотрим использование типов структур (struct) в .NET. Типы структур прекрасно подходят для моделирования математических, геометрических и прочих "атомарных" сущностей в приложении. Они (как и перечисления) представляют собой определяемые пользователем типы, однако (в отличие от перечислений) просто коллекциями пар "имя/значение" - не являются. Вместо этого они скорее представляют собой типы, способные содержать любое количество полей данных и членов, выполняющих над ними какие-то операции.
В С# структуры создаются с помощью ключевого слова struct:
struct Point
{
// Поля структуры.
public int X;
public int Y;
// Добавление 1 к позиции (X, Y) .
public void Increment ()
{
X++; Y++;
}
// Вычитание 1 из позиции (X, Y) .
public void Decrement ()
{
X--; Y—;
}
// Отображение текущей позиции.
public void Display()
{
Console.WriteLine("X = {0}, Y= {1}", X, Y) ;
}
}
Здесь определены два целочисленных поля (X и Y) с использованием ключевого слова public, которое представляет собой один из модификаторов управления доступом. Объявление данных с использованием ключевого слова public гарантирует наличие у вызывающего кода возможности напрямую получать к ним доступ из данной переменной Point (через операцию точки).
Для создания переменной типа структуры на выбор доступно несколько вариантов.
Первый, когда просто создается переменная Point с присваиванием значений каждому из ее общедоступных элементов данных типа полей перед вызовом ее членов. Если значения общедоступным элементам структуры не присвоены перед ее использованием, компилятор сообщит об ошибке.
// Ошибка! Полю Y не было присвоено значение.
Point pi;
pl.X = 10;
pi.Display();
// Все в порядке1 Обоим полям были присвоены
// значения перед использованием.
Point p2;
р2.Х = 10;
p2.Y = 10;
р2.Display();
В качестве альтернативного варианта переменные типа структур можно создавать с применением ключевого слова new, поддерживаемого в С#, что предусматривает вызов для структуры конструктора по умолчанию. По определению используемый по умолчанию конструктор не принимает никаких аргументов. Преимущество подхода с вызовом для структуры конструктора по умолчанию состоит в том, что в таком случае каждому элементу данных полей автоматически присваивается соответствующее значение по умолчанию:
// Установка для всех полей значений по умолчанию
//за счет применения конструктора по умолчанию.
Point pi = new Point () ;
// Выводит Х=0, Y=0
pi.Display();
Создавать структуру можно также с помощью специального конструктора, что позволяет указывать значения для полей данных при создании переменной, а не устанавливать их для каждого из них по отдельности.
Основные различия классов и структур:
1) Класс и структура принадлежат к двум различным категориям типов – типов-ссылок и типов-значений. То есть присвоение одной структуры другой вызывает операцию копирования содержимого одной из них в другую, а после присвоения переменной типа класса другой приводит к тому, что обе они ссылаются на один объект;
2) Структуру нельзя наследовать от других структур или классов. Все структуры наследуются непосредственно от System.ValueType, который наследуется от System.Object.;
3) Структура не может служить основой для классов;
4) Структуры могут быть созданы без использования нового оператора.
