Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSharp Language Specification.doc
Скачиваний:
13
Добавлен:
26.09.2019
Размер:
4.75 Mб
Скачать

4. Типы 89

4.1 Типы значений 89

4.1.1 Тип System.ValueType 90

4.1.2 Конструкторы по умолчанию 90

4.1.3 Типы структуры 91

4.1.4 Простые типы 91

4.1.5 Целые типы 92

4.1.6 Типы с плавающей запятой 93

4.1.7 Тип decimal 95

4.1.8 Тип bool 95

4.1.9 Перечисляемые типы 96

4.1.10 Обнуляемые типы 96

4.2 Ссылочные типы 97

4.2.1 Типы классов 97

4.2.2 Тип объекта 98

4.2.3 Динамический тип 98

4.2.4 Строковый тип 98

4.2.5 Типы интерфейсов 98

4.2.6 Типы массивов 98

4.2.7 Типы делегатов 99

4.3 Упаковка и распаковка 99

4.3.1 Преобразования упаковки 99

4.3.2 Преобразования распаковки 100

4.4 Сформированные типы 101

4.4.1 Аргументы типа 102

4.4.2 Открытые и закрытые типы 102

4.4.3 Связанные и несвязанные типы 103

4.4.4 Соблюдение ограничений 103

4.5 Параметры типа 104

4.6 Типы дерева выражений 105

4.7 Динамический тип 106

5. Переменные 107

5.1 Категории переменных 107

5.1.1 Статические переменные 107

5.1.2 Переменные экземпляра 108

5.1.2.1 Переменные экземпляра в классах 108

5.1.2.2 Переменные экземпляра в структурах 108

5.1.3 Элементы массива 108

5.1.4 Параметры по значению 108

5.1.5 Параметры по ссылке 108

5.1.6 Выходные параметры 109

5.1.7 Локальные переменные 109

5.2 Значения по умолчанию 110

5.3 Определенное присваивание 110

5.3.1 Переменные с начальным значением 111

5.3.2 Переменные без начального значения 112

5.3.3 Точные правила для выявления определенного присваивания 112

5.3.3.1 Общие правила для операторов 113

5.3.3.2 Операторы блока, операторы checked и unchecked 113

5.3.3.3 Операторы-выражения 113

5.3.3.4 Операторы объявления 113

5.3.3.5 Операторы If 113

5.3.3.6 Операторы switch 114

5.3.3.7 Операторы while 114

5.3.3.8 Операторы do 114

5.3.3.9 Операторы for 115

5.3.3.10 Операторы break, continue и goto 115

5.3.3.11 Операторы throw 115

5.3.3.12 Операторы return 115

5.3.3.13 Операторы try-catch 116

5.3.3.14 Операторы try-finally 116

5.3.3.15 Операторы try-catch-finally 116

5.3.3.16 Операторы foreach 117

5.3.3.17 Операторы using 118

5.3.3.18 Операторы lock 118

5.3.3.19 Операторы yield 118

5.3.3.20 Общие правила для простых выражений 118

5.3.3.21 Общие правила для выражений с внедренными выражениями 118

5.3.3.22 Выражения вызова и выражения создания объекта 119

5.3.3.23 Простые выражения присваивания 119

5.3.3.24 Выражения && 120

5.3.3.25 Выражения || 121

5.3.3.26 ! Выражения ! 122

5.3.3.27 ?? Выражения ?? 122

5.3.3.28 Выражения ?: 122

5.3.3.29 Анонимные функции 123

5.4 Ссылочные переменные 124

5.5 Атомарность ссылок на переменные 125

6. Преобразования 126

6.1 Неявные преобразования 126

6.1.1 Преобразование идентификатора 127

6.1.2 Неявные преобразования числовых типов 127

6.1.3 Неявные преобразования перечисляемых типов 127

6.1.4 Неявные преобразования обнуляемых типов 127

6.1.5 Преобразования литерала null 128

6.1.6 Неявные преобразования ссылочных типов 128

6.1.7 Преобразования упаковки 129

6.1.8 Неявные динамические преобразования 129

6.1.9 Неявные преобразования выражений констант 130

6.1.10 Неявные преобразования, включающие параметры типа 130

6.1.11 Пользовательские неявные преобразования 130

6.1.12 Преобразования анонимных функций и преобразования группы методов 131

6.2 Явные преобразования 131

6.2.1 Явные преобразования числовых типов 131

6.2.2 Явные преобразования перечисляемых типов 133

6.2.3 Явные преобразования обнуляемых типов 133

6.2.4 Явные преобразования ссылочных типов 134

6.2.5 Преобразования распаковки 135

6.2.6 Неявные динамические преобразования 135

6.2.7 Явные преобразования, включающие параметры типа 136

6.2.8 Пользовательские явные преобразования 137

6.3 Стандартные преобразования 137

6.3.1 Стандартные неявные преобразования 137

6.3.2 Стандартные явные преобразования 137

6.4 Пользовательские преобразования 138

6.4.1 Допустимые пользовательские преобразования 138

6.4.2 Операторы преобразования с нулификацией 138

6.4.3 Вычисление пользовательских преобразований 138

6.4.4 Определенные пользователем неявные преобразования 139

6.4.5 Определенные пользователем явные преобразования 140

6.5 Преобразования анонимных функций 141

6.5.1 Вычисление преобразования анонимной функции к типу делегата 143

6.5.2 Вычисление преобразования анонимной функции к типу дерева выражений 144

6.5.3 Пример реализации 144

6.6 Преобразования группы методов 147

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