- •Алфавит
- •Комментарии
- •Идентификаторы
- •Ключевые слова
- •Переменные и константы
- •Пространства имен
- •Main() и аргументы командной строки
- •Операторы
- •Основные операторы
- •Унарные операторы
- •Аддитивные операторы
- •Мультипликативные операторы
- •Операторы сдвига
- •Операторы отношений
- •Операторы присваивания
- •Арифметическое переполнение
- •Математические операции
- •Литералы
- •Описание
- •Структуры
- •Инкапсуляция
- •Наследование
- •Полиморфиэм
- •Конструкторы
- •Деструкторы
- •Интерфейсы
- •Делегаты
- •Типы значений
- •Ссылочные типы
- •Тип dynamic
- •Тип object
- •Тип string
- •Встроенные базовые типы
- •Типы чисел
- •Типы целых чисел
- •Типы чисел с плавающей запятой
- •Значения типов по умолчанию
- •Преобразования типов
- •Стандартное форматирование чисел
- •Задание типов в объявлениях переменных
- •Инструкции, введение
- •Выражения
- •Разделители
- •Базовые алгоритмические структуры
- •Решения и ветвления
- •Безусловный переход вызовом функций
- •Ветвление if; else
- •Вложенные ветвления if; else
- •Выбор switch; case
Делегаты
Делегат — это тип, который определяет подпись метода и его можно связать с любым методом с совместимой подписью. Метод можно запустить (или вызвать) с помощью делегата. Делегаты используются для передачи методов в качестве аргументов к другим методам. Обработчики событий - это методы, вызываемые с помощью делегатов.
Объявление типа делегата аналогично сигнатуре метода. Оно имеет возвращаемое значение и некоторое число параметров какого-либо типа. Делегат используется для объявления ссылочного типа, который может быть использован для инкапсуляции именованного или анонимного метода. Делегаты аналогичны используемым в языке C++ указателям на функции, но являются типобезопасными и безопасными.
Создание и использование делегатов. Во многих случаях, таких как методы обратного вызова, делегат представляет только один метод, и единственное, что нужно сделать — создать и вызвать делегат.
Делегат определяется так
public delegate void Имя(ИмяОбъекта);
Так как в C# все является классом, то и делегат в момент компиляции превращается в класс, наследуемый от system.Multicastdelegate.
Типы значений
Переменные, основанные на типах значений, содержат непосредственно значения. При присвоении переменной одного типа значений другому создается копия присваиваемого значения. В этом заключается отличие от переменных ссылочного типа, при присвоении которых копируются ссылки на объекты, но не сами объекты.
Все типы значений являются неявными производными от System .ValueType .
Типы значений состоят из двух основных категорий:
Cтруктура struct. Это тип значения, который используется для инкапсуляции небольших групп связанных переменных, например координат точки.
Перечисление enum. Оно состоит из набора именованных констант, который называется списком перечислителя. По умолчанию первому перечислителю задан номер 0, а номер каждого последующего увеличивается на 1. Пример: enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};
Структуры делятся на следующие категории:
Числовые типы. Они могут быть целочисленные, вещественные - с плавающей запятой, десятичные.
Логический bool. Ключевое слово bool является псевдонимом свойства System .Boolean . Оно используется для объявления переменных для хранения логических значений, true и false.
Пользовательские структуры.
Ссылочные типы
Переменные ссылочных типов, называемые объектами, сохраняют ссылки на фактические данные. В данном разделе описаны следующие ключевые слова, используемые для объявления ссылочных типов:
Класс class.
Интерфейс interface.
Делегат delegate.
Динамический dynamic.
Объект object.
Строкаstring.
Тип dynamic
Тип dynamicпозволяет пропускать проверки типов во время компиляции операции, в которых он применяется . Вместо этого эти операции разрешаются во время выполнения. Тип упрощает доступ к API автоматизации Office и к динамическим API.
Тип object
Тип objectпредставляет собой псевдоним для Object в платформе .NET Framework. В унифицированной системе типов C# все типы, предопределенные и пользовательские, ссылочные типы и типы значений, наследуют непосредственно или косвенно от Object. Переменным типа object можно назначать значения любых типов. Когда переменная типа значения преобразуется в объект, говорят, что она упаковывается. Когда переменная типа object преобразуется в тип значения, говорят, что она распаковывается.