Изменения документа Оглавление
Редактировал(а) Alexandr Fokin 2022/12/12 12:01
От версии 1.1
отредактировано Alexandr Fokin
на 2022/12/12 11:59
на 2022/12/12 11:59
Изменить комментарий:
К данной версии нет комментариев
К версии 1.2
отредактировано Alexandr Fokin
на 2022/12/12 12:01
на 2022/12/12 12:01
Изменить комментарий:
К данной версии нет комментариев
Сводка
-
Свойства страницы (1 изменено, 0 добавлено, 0 удалено)
Подробности
- Свойства страницы
-
- Содержимое
-
... ... @@ -1,0 +1,2837 @@ 1 +{{html clean="false"}} 2 +<html> 3 + 4 +<head> 5 +<meta http-equiv=Content-Type content="text/html; charset=windows-1251"> 6 +<meta name=Generator content="Microsoft Word 15 (filtered)"> 7 +<style> 8 +<!-- 9 + /* Font Definitions */ 10 + @font-face 11 + {font-family:Wingdings; 12 + panose-1:5 0 0 0 0 0 0 0 0 0;} 13 +@font-face 14 + {font-family:"Cambria Math"; 15 + panose-1:2 4 5 3 5 4 6 3 2 4;} 16 +@font-face 17 + {font-family:"Calibri Light"; 18 + panose-1:2 15 3 2 2 2 4 3 2 4;} 19 +@font-face 20 + {font-family:"Segoe UI"; 21 + panose-1:2 11 5 2 4 2 4 2 2 3;} 22 + /* Style Definitions */ 23 + p.MsoNormal, li.MsoNormal, div.MsoNormal 24 + {margin-top:0cm; 25 + margin-right:0cm; 26 + margin-bottom:8.0pt; 27 + margin-left:0cm; 28 + line-height:107%; 29 + font-size:11.0pt; 30 + font-family:"Calibri",sans-serif;} 31 +h1 32 + {mso-style-link:"Заголовок 1 Знак"; 33 + margin-top:12.0pt; 34 + margin-right:0cm; 35 + margin-bottom:0cm; 36 + margin-left:0cm; 37 + margin-bottom:.0001pt; 38 + line-height:107%; 39 + page-break-after:avoid; 40 + font-size:16.0pt; 41 + font-family:"Calibri Light",sans-serif; 42 + color:#2E74B5; 43 + font-weight:normal;} 44 +h2 45 + {mso-style-link:"Заголовок 2 Знак"; 46 + margin-top:2.0pt; 47 + margin-right:0cm; 48 + margin-bottom:0cm; 49 + margin-left:0cm; 50 + margin-bottom:.0001pt; 51 + line-height:107%; 52 + page-break-after:avoid; 53 + font-size:13.0pt; 54 + font-family:"Calibri Light",sans-serif; 55 + color:#2E74B5; 56 + font-weight:normal;} 57 +h3 58 + {mso-style-link:"Заголовок 3 Знак"; 59 + margin-top:2.0pt; 60 + margin-right:0cm; 61 + margin-bottom:0cm; 62 + margin-left:0cm; 63 + margin-bottom:.0001pt; 64 + line-height:107%; 65 + page-break-after:avoid; 66 + font-size:12.0pt; 67 + font-family:"Calibri Light",sans-serif; 68 + color:#1F4D78; 69 + font-weight:normal;} 70 +h4 71 + {mso-style-link:"Заголовок 4 Знак"; 72 + margin-top:2.0pt; 73 + margin-right:0cm; 74 + margin-bottom:0cm; 75 + margin-left:0cm; 76 + margin-bottom:.0001pt; 77 + line-height:107%; 78 + page-break-after:avoid; 79 + font-size:11.0pt; 80 + font-family:"Calibri Light",sans-serif; 81 + color:#2E74B5; 82 + font-weight:normal; 83 + font-style:italic;} 84 +p.MsoAcetate, li.MsoAcetate, div.MsoAcetate 85 + {mso-style-link:"Текст выноски Знак"; 86 + margin:0cm; 87 + margin-bottom:.0001pt; 88 + font-size:9.0pt; 89 + font-family:"Segoe UI",sans-serif;} 90 +p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph 91 + {margin-top:0cm; 92 + margin-right:0cm; 93 + margin-bottom:8.0pt; 94 + margin-left:36.0pt; 95 + line-height:107%; 96 + font-size:11.0pt; 97 + font-family:"Calibri",sans-serif;} 98 +p.MsoListParagraphCxSpFirst, li.MsoListParagraphCxSpFirst, div.MsoListParagraphCxSpFirst 99 + {margin-top:0cm; 100 + margin-right:0cm; 101 + margin-bottom:0cm; 102 + margin-left:36.0pt; 103 + margin-bottom:.0001pt; 104 + line-height:107%; 105 + font-size:11.0pt; 106 + font-family:"Calibri",sans-serif;} 107 +p.MsoListParagraphCxSpMiddle, li.MsoListParagraphCxSpMiddle, div.MsoListParagraphCxSpMiddle 108 + {margin-top:0cm; 109 + margin-right:0cm; 110 + margin-bottom:0cm; 111 + margin-left:36.0pt; 112 + margin-bottom:.0001pt; 113 + line-height:107%; 114 + font-size:11.0pt; 115 + font-family:"Calibri",sans-serif;} 116 +p.MsoListParagraphCxSpLast, li.MsoListParagraphCxSpLast, div.MsoListParagraphCxSpLast 117 + {margin-top:0cm; 118 + margin-right:0cm; 119 + margin-bottom:8.0pt; 120 + margin-left:36.0pt; 121 + line-height:107%; 122 + font-size:11.0pt; 123 + font-family:"Calibri",sans-serif;} 124 +span.1 125 + {mso-style-name:"Заголовок 1 Знак"; 126 + mso-style-link:"Заголовок 1"; 127 + font-family:"Calibri Light",sans-serif; 128 + color:#2E74B5;} 129 +span.2 130 + {mso-style-name:"Заголовок 2 Знак"; 131 + mso-style-link:"Заголовок 2"; 132 + font-family:"Calibri Light",sans-serif; 133 + color:#2E74B5;} 134 +span.3 135 + {mso-style-name:"Заголовок 3 Знак"; 136 + mso-style-link:"Заголовок 3"; 137 + font-family:"Calibri Light",sans-serif; 138 + color:#1F4D78;} 139 +span.4 140 + {mso-style-name:"Заголовок 4 Знак"; 141 + mso-style-link:"Заголовок 4"; 142 + font-family:"Calibri Light",sans-serif; 143 + color:#2E74B5; 144 + font-style:italic;} 145 +span.a 146 + {mso-style-name:"Текст выноски Знак"; 147 + mso-style-link:"Текст выноски"; 148 + font-family:"Segoe UI",sans-serif;} 149 +.MsoPapDefault 150 + {margin-bottom:8.0pt; 151 + line-height:107%;} 152 +@page WordSection1 153 + {size:595.3pt 841.9pt; 154 + margin:36.0pt 36.0pt 36.0pt 36.0pt;} 155 +div.WordSection1 156 + {page:WordSection1;} 157 + /* List Definitions */ 158 + ol 159 + {margin-bottom:0cm;} 160 +ul 161 + {margin-bottom:0cm;} 162 +--> 163 +</style> 164 + 165 +</head> 166 + 167 +<body lang=RU> 168 + 169 +<div class=WordSection1> 170 + 171 +<h1 style='margin-left:36.0pt;text-indent:-18.0pt'><span style='font-family: 172 +Symbol'>·<span style='font:7.0pt "Times New Roman"'> 173 +</span></span>Часть I. Основы CLR</h1> 174 + 175 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 176 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 177 +1. Модель выполнения кода в среде CLR</h2> 178 + 179 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 180 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Компиляция 181 +исходного кода в управляемые модули</h3> 182 + 183 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 184 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Объединение 185 +управляемых модулей в сборку</h3> 186 + 187 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 188 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Загрузка 189 +CLR</h3> 190 + 191 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 192 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Исполнение 193 +кода сборки </h3> 194 + 195 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 196 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 197 +</span></span>IL-код и верификация</h4> 198 + 199 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 200 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 201 +</span></span>Небезопасный код</h4> 202 + 203 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 204 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 205 +</span></span>IL и защита интеллектуальной собственности</h4> 206 + 207 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span lang=EN-US 208 +style='font-family:Wingdings'>§<span style='font:7.0pt "Times New Roman"'> 209 +</span></span><span lang=EN-US>NGen.exe</span></h3> 210 + 211 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span lang=EN-US 212 +style='font-family:Wingdings'>§<span style='font:7.0pt "Times New Roman"'> 213 +</span></span>Библиотека <span lang=EN-US>FCL </span></h3> 214 + 215 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span lang=EN-US 216 +style='font-family:Wingdings'>§<span style='font:7.0pt "Times New Roman"'> 217 +</span></span><span lang=EN-US>CTS</span></h3> 218 + 219 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 220 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>CLS</h3> 221 + 222 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 223 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Взаимодействие 224 +с неуправляемым кодом</h3> 225 + 226 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 227 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 228 +2. Компоновка, упаковка, развертывание и администрирование приложений и типов</h2> 229 + 230 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 231 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Задачи 232 +развертывания в <span lang=EN-US>.</span>NET Framework</h3> 233 + 234 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 235 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Компоновка 236 +типов в модуль</h3> 237 + 238 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 239 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 240 +</span></span>Файл параметров</h4> 241 + 242 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 243 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Несколько 244 +слов о метаданных</h3> 245 + 246 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 247 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Объединение 248 +модулей для создания сборки</h3> 249 + 250 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 251 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 252 +</span></span>Добавление сборок в проект в среде Visual Studio</h4> 253 + 254 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 255 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 256 +</span></span>Использование утилиты Assembly Linker</h4> 257 + 258 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 259 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 260 +</span></span>Включение в сборку файлов ресурсов</h4> 261 + 262 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 263 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Ресурсы 264 +со сведениями о версии сборки</h3> 265 + 266 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 267 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 268 +</span></span>Номера версии</h4> 269 + 270 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 271 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Региональные 272 +стандарты</h3> 273 + 274 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 275 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Развертывание 276 +простых приложений (закрытое развертывание сборок)</h3> 277 + 278 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 279 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Простое 280 +средство администрирования (конфигурационный файл)</h3> 281 + 282 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 283 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 284 +</span></span>Алгоритм поиска файлов сборки</h4> 285 + 286 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 287 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 288 +3. Совместно используемые сборки и сборки со строгим именем</h2> 289 + 290 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 291 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Два 292 +вида сборок — два вида развертывания</h3> 293 + 294 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 295 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Назначение 296 +сборке строгого имени</h3> 297 + 298 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 299 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Глобальный 300 +кэш сборок</h3> 301 + 302 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 303 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Построение 304 +сборки, ссылающейся на сборку со строгим именем</h3> 305 + 306 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 307 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Устойчивость 308 +сборок со строгими именами к несанкционированной модификации</h3> 309 + 310 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 311 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Отложенное 312 +подписание</h3> 313 + 314 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 315 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Закрытое 316 +развертывание сборок со строгими именами</h3> 317 + 318 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 319 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Как 320 +исполняющая среда разрешает ссылки на типы</h3> 321 + 322 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 323 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Дополнительные 324 +административные средства (конфигурационные файлы)</h3> 325 + 326 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 327 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 328 +</span></span>Управление версиями при помощи политики издателя</h4> 329 + 330 +<h1 style='margin-left:36.0pt;text-indent:-18.0pt'><span style='font-family: 331 +Symbol'>·<span style='font:7.0pt "Times New Roman"'> 332 +</span></span>Часть II. Проектирование типов</h1> 333 + 334 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 335 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 336 +4. Основы типов</h2> 337 + 338 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 339 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Все 340 +типы — производные от System.Object</h3> 341 + 342 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 343 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Приведение 344 +типов</h3> 345 + 346 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 347 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 348 +</span></span>Приведение типов в C# с помощью операторов is и as</h4> 349 + 350 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 351 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Пространства 352 +имен и сборки</h3> 353 + 354 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 355 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 356 +</span></span>Связь между сборками и пространством имен</h4> 357 + 358 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 359 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Как 360 +разные компоненты взаимодействуют во время выполнения</h3> 361 + 362 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 363 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 364 +5. Примитивные, ссылочные и значимые типы</h2> 365 + 366 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 367 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Примитивные 368 +типы в языках программирования</h3> 369 + 370 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 371 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 372 +</span></span>Проверяемые и непроверяемые операции для примитивных типов</h4> 373 + 374 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 375 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Ссылочные 376 +и значимые типы</h3> 377 + 378 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 379 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 380 +</span></span>Как CLR управляет размещением полей для типа </h4> 381 + 382 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 383 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Упаковка 384 +и распаковка значимых типов</h3> 385 + 386 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 387 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 388 +</span></span>Изменение полей в упакованных значимых типах посредством интерфейсов 389 +(и почему этого лучше не делать)</h4> 390 + 391 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 392 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 393 +</span></span>Равенство и тождество объектов</h4> 394 + 395 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 396 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Хеш-коды 397 +объектов</h3> 398 + 399 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 400 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Примитивный 401 +тип данных dynamic</h3> 402 + 403 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 404 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 405 +6. Основные сведения о членах и типах</h2> 406 + 407 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 408 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Члены 409 +типа</h3> 410 + 411 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 412 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Видимость 413 +типа</h3> 414 + 415 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 416 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 417 +</span></span>Дружественные сборки</h4> 418 + 419 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 420 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Доступ 421 +к членам типов</h3> 422 + 423 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 424 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Статические 425 +классы</h3> 426 + 427 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 428 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Частичные 429 +классы, структуры и интерфейсы</h3> 430 + 431 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 432 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Компоненты, 433 +полиморфизм и версии</h3> 434 + 435 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 436 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 437 +</span></span>Вызов виртуальных методов, свойств и событий в CLR</h4> 438 + 439 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 440 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 441 +</span></span>Разумное использование видимости типов и модификаторов доступа к членам</h4> 442 + 443 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 444 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 445 +</span></span>Работа с виртуальными методами при управлении версиями типов</h4> 446 + 447 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 448 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 449 +7. Константы и поля</h2> 450 + 451 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 452 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Константы</h3> 453 + 454 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 455 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Поля</h3> 456 + 457 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 458 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 459 +8. Методы</h2> 460 + 461 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 462 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Конструкторы 463 +экземпляров и классы (ссылочные типы)</h3> 464 + 465 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 466 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Конструкторы 467 +экземпляров и структуры (значимые типы)</h3> 468 + 469 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 470 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Конструкторы 471 +типов</h3> 472 + 473 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 474 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Методы 475 +перегруженных операторов</h3> 476 + 477 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 478 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 479 +</span></span>Операторы и взаимодействие языков программирования</h4> 480 + 481 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 482 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 483 +</span></span>Особое мнение автора о правилах Microsoft, связанных с именами методов 484 +операторов</h4> 485 + 486 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 487 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Методы 488 +операторов преобразования</h3> 489 + 490 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 491 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Методы 492 +расширения</h3> 493 + 494 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 495 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 496 +</span></span>Правила и рекомендации</h4> 497 + 498 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 499 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 500 +</span></span>Расширение разных типов методами расширения</h4> 501 + 502 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 503 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 504 +</span></span>Атрибут расширения</h4> 505 + 506 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 507 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Частичные 508 +методы</h3> 509 + 510 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 511 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 512 +</span></span>Правила и рекомендации</h4> 513 + 514 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 515 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 516 +9. Параметры</h2> 517 + 518 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 519 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Необязательные 520 +и именованные параметры</h3> 521 + 522 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 523 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 524 +</span></span>Правила использования параметров.</h4> 525 + 526 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 527 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 528 +</span></span>Атрибут DefaultParameterValue и необязательные атрибуты</h4> 529 + 530 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 531 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Неявно 532 +типизированные локальные переменные</h3> 533 + 534 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 535 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Передача 536 +параметров в метод по ссылке</h3> 537 + 538 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 539 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Передача 540 +переменного количества аргументов</h3> 541 + 542 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 543 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Типы 544 +параметров и возвращаемых значений</h3> 545 + 546 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 547 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Константность</h3> 548 + 549 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 550 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 551 +10. Свойства</h2> 552 + 553 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 554 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Свойства 555 +без параметров</h3> 556 + 557 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 558 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 559 +</span></span>Автоматически реализуемые свойства</h4> 560 + 561 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 562 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 563 +</span></span>Осторожный подход к определению свойств</h4> 564 + 565 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 566 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 567 +</span></span>Свойства и отладчик Visual Studio</h4> 568 + 569 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 570 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 571 +</span></span>Инициализаторы объектов и коллекций</h4> 572 + 573 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 574 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 575 +</span></span>Анонимные типы</h4> 576 + 577 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 578 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 579 +</span></span>Тип System.Tuple</h4> 580 + 581 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 582 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Свойства 583 +с параметрами</h3> 584 + 585 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 586 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 587 +</span></span>Выбор главного свойства с параметрами</h4> 588 + 589 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 590 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Производительность 591 +при вызове методов доступа</h3> 592 + 593 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 594 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Доступность 595 +методов доступа свойств</h3> 596 + 597 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 598 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Обобщенные 599 +методы доступа свойств</h3> 600 + 601 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 602 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 603 +11. События</h2> 604 + 605 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 606 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Разработка 607 +типа, поддерживающего событие</h3> 608 + 609 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 610 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Этап 611 +1. Определение типа для хранения всей дополнительной информации, передаваемой получателям 612 +уведомления о событии</h3> 613 + 614 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 615 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Этап 616 +2. Определение члена-события</h3> 617 + 618 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 619 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Этап 620 +3. Определение метода, ответственного за уведомление зарегистрированных объектов 621 +о событии</h3> 622 + 623 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 624 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Этап 625 +4. Определение метода, преобразующего входную информацию в желаемое событие</h3> 626 + 627 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 628 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Реализация 629 +событий компилятором</h3> 630 + 631 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 632 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Создание 633 +типа, отслеживающего событие</h3> 634 + 635 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 636 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Явное 637 +управление регистрацией событий</h3> 638 + 639 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 640 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 641 +12. Обобщения</h2> 642 + 643 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 644 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Обобщения 645 +в библиотеке FCL</h3> 646 + 647 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 648 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Инфраструктура 649 +обобщений</h3> 650 + 651 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 652 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 653 +</span></span>Открытые и закрытые типы</h4> 654 + 655 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 656 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 657 +</span></span>Обобщенные типы и наследование</h4> 658 + 659 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 660 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 661 +</span></span>Идентификация обобщенных типов</h4> 662 + 663 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 664 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 665 +</span></span>Разрастание кода</h4> 666 + 667 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 668 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Обобщенные 669 +интерфейсы</h3> 670 + 671 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 672 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Обобщенные 673 +делегаты</h3> 674 + 675 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 676 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 677 +</span></span>Контравариантные и ковариантные аргументы-типы в делегатах и интерфейсах</h4> 678 + 679 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 680 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Обобщенные 681 +методы</h3> 682 + 683 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 684 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 685 +</span></span>Обобщенные методы и выведение типов</h4> 686 + 687 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 688 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Обобщения 689 +и другие члены</h3> 690 + 691 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 692 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Верификация 693 +и ограничения</h3> 694 + 695 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 696 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 697 +</span></span>Основные ограничения</h4> 698 + 699 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 700 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 701 +</span></span>Дополнительные ограничения</h4> 702 + 703 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 704 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 705 +</span></span>Ограничения конструктора</h4> 706 + 707 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 708 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 709 +</span></span>Другие проблемы верификации</h4> 710 + 711 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 712 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 713 +13<span lang=EN-US>.</span><span lang=EN-US> </span>Интерфейсы</h2> 714 + 715 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 716 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Наследование 717 +в классах и интерфейсах</h3> 718 + 719 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 720 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Определение 721 +интерфейсов</h3> 722 + 723 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 724 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Наследование 725 +интерфейсов</h3> 726 + 727 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 728 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Подробнее 729 +о вызовах интерфейсных методов</h3> 730 + 731 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 732 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Явные 733 +и неявные реализации интерфейсных методов (что происходит за кулисами)</h3> 734 + 735 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 736 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Обобщенные 737 +интерфейсы</h3> 738 + 739 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 740 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Обобщения 741 +и ограничения интерфейса</h3> 742 + 743 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 744 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Реализация 745 +нескольких интерфейсов с одинаковыми сигнатурами и именами методов</h3> 746 + 747 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 748 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Совершенствование 749 +безопасности типов за счет явной реализации интерфейсных методов</h3> 750 + 751 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 752 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Опасности 753 +явной реализации интерфейсных методов</h3> 754 + 755 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 756 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Дилемма 757 +разработчика: базовый класс или интерфейс?</h3> 758 + 759 +<h1 style='margin-left:36.0pt;text-indent:-18.0pt'><span style='font-family: 760 +Symbol'>·<span style='font:7.0pt "Times New Roman"'> 761 +</span></span>Часть III. Основные типы данных</h1> 762 + 763 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 764 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 765 +14. Символы, строки и обработка текста</h2> 766 + 767 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 768 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Символы</h3> 769 + 770 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 771 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Тип 772 +System.String</h3> 773 + 774 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 775 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 776 +</span></span>Создание строк</h4> 777 + 778 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 779 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 780 +</span></span>Неизменяемые строки</h4> 781 + 782 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 783 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 784 +</span></span>Сравнение строк</h4> 785 + 786 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 787 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 788 +</span></span>Интернирование строк</h4> 789 + 790 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 791 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 792 +</span></span>Создание пулов строк</h4> 793 + 794 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 795 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 796 +</span></span>Работа с символами и текстовыми элементами в строке</h4> 797 + 798 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 799 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 800 +</span></span>Прочие операции со строками</h4> 801 + 802 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 803 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Эффективное 804 +создание строк</h3> 805 + 806 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 807 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 808 +</span></span>Создание объекта StringBuilder</h4> 809 + 810 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 811 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 812 +</span></span>Члены типа StringBuilder</h4> 813 + 814 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 815 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Получение 816 +строкового представления объекта</h3> 817 + 818 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 819 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 820 +</span></span>Форматы и региональные стандарты</h4> 821 + 822 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 823 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 824 +</span></span>Форматирование нескольких объектов в одну строку</h4> 825 + 826 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 827 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 828 +</span></span>Создание собственного средства форматирования</h4> 829 + 830 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 831 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Получение 832 +объекта посредством разбора строки</h3> 833 + 834 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 835 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Кодировки: 836 +преобразования между символами и байтами</h3> 837 + 838 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 839 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 840 +</span></span>Кодирование и декодирование потоков символов и байтов</h4> 841 + 842 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 843 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 844 +</span></span>Кодирование и декодирование строк в кодировке Base-64</h4> 845 + 846 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 847 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Защищенные 848 +строки</h3> 849 + 850 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 851 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 852 +15. Перечислимые типы и битовые флаги</h2> 853 + 854 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 855 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Перечислимые 856 +типы</h3> 857 + 858 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 859 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Битовые 860 +флаги</h3> 861 + 862 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 863 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Добавление 864 +методов к перечислимым типам</h3> 865 + 866 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 867 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 868 +16. Массивы</h2> 869 + 870 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 871 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Инициализация 872 +элементов массива</h3> 873 + 874 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 875 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Приведение 876 +типов в массивах</h3> 877 + 878 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 879 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Базовый 880 +класс System Array</h3> 881 + 882 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span lang=EN-US 883 +style='font-family:Wingdings'>§<span style='font:7.0pt "Times New Roman"'> 884 +</span></span>Реализация интерфейсов <span lang=EN-US>IEnumerable, ICollection </span>и 885 +<span lang=EN-US>IList</span></h3> 886 + 887 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 888 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Передача 889 +и возврат массивов</h3> 890 + 891 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 892 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Массивы 893 +с ненулевой нижней границей</h3> 894 + 895 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 896 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Внутренняя 897 +реализация массивов</h3> 898 + 899 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 900 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Небезопасный 901 +доступ к массивам и массивы фиксированного размера</h3> 902 + 903 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 904 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 905 +17. Делегаты</h2> 906 + 907 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 908 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Знакомство 909 +с делегатами</h3> 910 + 911 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 912 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Обратный 913 +вызов статических методов</h3> 914 + 915 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 916 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Обратный 917 +вызов экземплярных методов</h3> 918 + 919 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 920 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Тонкости 921 +использования делегатов</h3> 922 + 923 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 924 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Обратный 925 +вызов нескольких методов (цепочки делегатов)</h3> 926 + 927 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 928 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 929 +</span></span>Поддержка цепочек делегатов в C#</h4> 930 + 931 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 932 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 933 +</span></span>Дополнительные средства управления цепочками делегатов</h4> 934 + 935 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 936 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Обобщенные 937 +делегаты</h3> 938 + 939 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 940 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Упрощенный 941 +синтаксис работы с делегатами</h3> 942 + 943 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 944 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 945 +</span></span>Упрощение 1: не создаем объект делегата</h4> 946 + 947 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 948 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 949 +</span></span>Упрощение 2: не определяем метод обратного вызова</h4> 950 + 951 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 952 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 953 +</span></span>Упрощение 3: не создаем обертку для локальных переменных для передачи 954 +их методу обратного вызова</h4> 955 + 956 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 957 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Делегаты 958 +и отражение</h3> 959 + 960 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 961 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 962 +18. Настраиваемые атрибуты</h2> 963 + 964 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 965 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Сфера 966 +применения настраиваемых атрибутов</h3> 967 + 968 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 969 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Определение 970 +класса атрибутов</h3> 971 + 972 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 973 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Конструктор 974 +атрибута и типы данных полей и свойств</h3> 975 + 976 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 977 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Выявление 978 +настраиваемых атрибутов</h3> 979 + 980 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 981 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Сравнение 982 +экземпляров атрибута</h3> 983 + 984 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 985 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Выявление 986 +настраиваемых атрибутов без создания объектов, производных от Attribute</h3> 987 + 988 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 989 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Условные 990 +атрибуты</h3> 991 + 992 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 993 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 994 +19. Null-совместимые значимые типы</h2> 995 + 996 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 997 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Поддержка 998 +в C# null-совместимых значимых типов</h3> 999 + 1000 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1001 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Оператор 1002 +объединения null-совместимых значений</h3> 1003 + 1004 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1005 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Поддержка 1006 +в CLR null-совместимых значимых типов</h3> 1007 + 1008 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1009 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1010 +</span></span>Упаковка null-совместимых значимых типов</h4> 1011 + 1012 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1013 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1014 +</span></span>Распаковка null-совместимых значимых типов</h4> 1015 + 1016 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1017 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1018 +</span></span>Вызов метода GetType через null-совместимый значимый тип</h4> 1019 + 1020 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1021 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1022 +</span></span>Вызов интерфейсных методов через null-совместимый значимый тип</h4> 1023 + 1024 +<h1 style='margin-left:36.0pt;text-indent:-18.0pt'><span style='font-family: 1025 +Symbol'>·<span style='font:7.0pt "Times New Roman"'> 1026 +</span></span>Часть IV. Ключевые механизмы</h1> 1027 + 1028 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 1029 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 1030 +20. Исключения и управление состоянием 496</h2> 1031 + 1032 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1033 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Определение 1034 +«исключения»</h3> 1035 + 1036 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1037 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Механика 1038 +обработки исключений</h3> 1039 + 1040 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1041 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1042 +</span></span>Блок try</h4> 1043 + 1044 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1045 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1046 +</span></span>Блок catch</h4> 1047 + 1048 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1049 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1050 +</span></span>Блок finally</h4> 1051 + 1052 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1053 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1054 +</span></span>CLS-совместимые и CLS-несовместимые исключения</h4> 1055 + 1056 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1057 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Класс 1058 +System<span lang=EN-US>.</span>Exception</h3> 1059 + 1060 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1061 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Классы 1062 +исключений, определенные в FCL</h3> 1063 + 1064 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1065 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Генерирование 1066 +исключений</h3> 1067 + 1068 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1069 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Создание 1070 +классов исключений</h3> 1071 + 1072 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1073 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Продуктивность 1074 +вместо надежности</h3> 1075 + 1076 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1077 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Приемы 1078 +работы с исключениями</h3> 1079 + 1080 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1081 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1082 +</span></span>Активно используйте блоки finally</h4> 1083 + 1084 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1085 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1086 +</span></span>Не надо перехватывать все исключения</h4> 1087 + 1088 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1089 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1090 +</span></span>Корректное восстановление после исключения</h4> 1091 + 1092 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1093 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Отмена 1094 +незавершенных операций при невосстановимых исключениях</h3> 1095 + 1096 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1097 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Сокрытие 1098 +деталей реализации для сохранения контракта</h3> 1099 + 1100 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1101 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Необработанные 1102 +исключения</h3> 1103 + 1104 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1105 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Отладка 1106 +исключений</h3> 1107 + 1108 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1109 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Скорость 1110 +обработки исключений</h3> 1111 + 1112 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1113 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Области 1114 +ограниченного выполнения</h3> 1115 + 1116 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1117 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Контракты 1118 +кода</h3> 1119 + 1120 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 1121 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 1122 +21. Автоматическое управление памятью (уборка мусора)</h2> 1123 + 1124 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1125 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Управляемая 1126 +куча</h3> 1127 + 1128 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1129 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1130 +</span></span>Выделение ресурсов из управляемой кучи</h4> 1131 + 1132 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1133 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1134 +</span></span>Алгоритм уборки мусора</h4> 1135 + 1136 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1137 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1138 +</span></span>Уборка мусора и отладка</h4> 1139 + 1140 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1141 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Поколения</h3> 1142 + 1143 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1144 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1145 +</span></span>Запуск уборки мусора</h4> 1146 + 1147 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1148 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1149 +</span></span>Большие объекты</h4> 1150 + 1151 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1152 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1153 +</span></span>Режимы уборки мусора</h4> 1154 + 1155 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1156 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1157 +</span></span>Программное управление уборщиком мусора</h4> 1158 + 1159 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1160 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1161 +</span></span>Мониторинг использования памяти приложением</h4> 1162 + 1163 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1164 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Освобождение 1165 +ресурсов при помощи механизма финализации</h3> 1166 + 1167 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1168 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1169 +</span></span>Типы, использующие системные ресурсы</h4> 1170 + 1171 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1172 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1173 +</span></span>Интересные аспекты зависимостей</h4> 1174 + 1175 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1176 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1177 +</span></span>Другие возможности уборщика мусора для работы с системными ресурсами</h4> 1178 + 1179 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1180 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1181 +</span></span>Внутренняя реализация финализации</h4> 1182 + 1183 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1184 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Мониторинг 1185 +и контроль времени жизни объектов</h3> 1186 + 1187 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 1188 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 1189 +22. Хостинг CLR и домены приложений</h2> 1190 + 1191 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1192 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Хостинг 1193 +CLR</h3> 1194 + 1195 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1196 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Домены 1197 +приложений</h3> 1198 + 1199 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1200 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1201 +</span></span>Доступ к объектам из других доменов</h4> 1202 + 1203 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1204 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Выгрузка 1205 +доменов</h3> 1206 + 1207 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1208 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Мониторинг 1209 +доменов</h3> 1210 + 1211 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1212 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Уведомление 1213 +о первом управляемом исключении домена</h3> 1214 + 1215 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1216 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Использование 1217 +хостами доменов приложений</h3> 1218 + 1219 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1220 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1221 +</span></span>Исполняемые приложения</h4> 1222 + 1223 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1224 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1225 +</span></span>Полнофункциональные интернет-приложения Silverlight</h4> 1226 + 1227 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1228 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1229 +</span></span>Microsoft ASPNET и веб-службы XML</h4> 1230 + 1231 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1232 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1233 +</span></span>Microsoft SQL Server</h4> 1234 + 1235 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1236 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1237 +</span></span>Будущее и мечты</h4> 1238 + 1239 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1240 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Нетривиальное 1241 +управление хостингом</h3> 1242 + 1243 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1244 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1245 +</span></span>Применение управляемого кода</h4> 1246 + 1247 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1248 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1249 +</span></span>Разработка надежных хост-приложений</h4> 1250 + 1251 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1252 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1253 +</span></span>Возвращение потока в хост</h4> 1254 + 1255 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 1256 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 1257 +23. Загрузка сборок и отражение</h2> 1258 + 1259 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1260 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Загрузка 1261 +сборок</h3> 1262 + 1263 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1264 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Использование 1265 +отражения для создания динамически расширяемых приложений</h3> 1266 + 1267 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1268 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Производительность 1269 +отражения</h3> 1270 + 1271 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1272 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1273 +</span></span>Нахождение типов, определенных в сборке</h4> 1274 + 1275 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1276 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1277 +</span></span>Объект Type</h4> 1278 + 1279 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1280 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1281 +</span></span>Создание иерархии типов, производных от Exception</h4> 1282 + 1283 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1284 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1285 +</span></span>Создание экземпляра типа</h4> 1286 + 1287 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1288 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Создание 1289 +приложений с поддержкой подключаемых компонентов</h3> 1290 + 1291 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1292 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1293 +</span></span>Нахождение членов типа путем отражения</h4> 1294 + 1295 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1296 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1297 +</span></span>Нахождение членов типа</h4> 1298 + 1299 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1300 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1301 +</span></span>Обращение к членам типов</h4> 1302 + 1303 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1304 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1305 +</span></span>Использование дескрипторов привязки для снижения потребления памяти 1306 +процессом</h4> 1307 + 1308 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 1309 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 1310 +24. Сериализация</h2> 1311 + 1312 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1313 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Практический 1314 +пример сериализации/десериализации</h3> 1315 + 1316 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1317 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Сериализуемые 1318 +типы</h3> 1319 + 1320 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1321 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Управление 1322 +сериализацией и десериализацией</h3> 1323 + 1324 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1325 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Сериализация 1326 +экземпляров типа</h3> 1327 + 1328 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1329 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Управление 1330 +сериализованными и десериализованными данными</h3> 1331 + 1332 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1333 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1334 +</span></span>Определение типа, реализующего интерфейс ISerializable, не реализуемый 1335 +базовым классом</h4> 1336 + 1337 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1338 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Контексты 1339 +потока ввода-вывода</h3> 1340 + 1341 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1342 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Сериализация 1343 +в другой тип и десериализация в другой объект</h3> 1344 + 1345 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1346 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Суррогаты 1347 +сериализации</h3> 1348 + 1349 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1350 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1351 +</span></span>Цепочка селекторов суррогатов</h4> 1352 + 1353 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1354 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Переопределение 1355 +сборки и/или типа при десериализации объекта</h3> 1356 + 1357 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 1358 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 1359 +25. Взаимодействие с компонентами WinRT</h2> 1360 + 1361 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1362 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Проекции 1363 +уровня CLR и правила системы типов компонентов WinRT</h3> 1364 + 1365 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1366 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1367 +</span></span>Основные концепции системы типов WinRT</h4> 1368 + 1369 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1370 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Проекции 1371 +уровня .NET Framework</h3> 1372 + 1373 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1374 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1375 +</span></span>Асинхронные вызовы WinRT API из кода NET</h4> 1376 + 1377 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1378 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1379 +</span></span>Взаимодействия между потоками WinRT и потоками NET</h4> 1380 + 1381 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1382 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1383 +</span></span>Передача блоков данных между CLR и WinRT</h4> 1384 + 1385 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1386 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Определение 1387 +компонентов WinRT в коде C#</h3> 1388 + 1389 +<h1 style='margin-left:36.0pt;text-indent:-18.0pt'><span style='font-family: 1390 +Symbol'>·<span style='font:7.0pt "Times New Roman"'> 1391 +</span></span>Часть V. Многопоточность</h1> 1392 + 1393 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 1394 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 1395 +26. Потоки исполнения</h2> 1396 + 1397 +<h4 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1398 +Wingdings;font-style:normal'>§<span style='font:7.0pt "Times New Roman"'> 1399 +</span></span>Для чего Windows поддерживает потоки?</h4> 1400 + 1401 +<h4 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1402 +Wingdings;font-style:normal'>§<span style='font:7.0pt "Times New Roman"'> 1403 +</span></span>Ресурсоемкость потоков</h4> 1404 + 1405 +<h4 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1406 +Wingdings;font-style:normal'>§<span style='font:7.0pt "Times New Roman"'> 1407 +</span></span>Так дальше не пойдет!</h4> 1408 + 1409 +<h4 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1410 +Wingdings;font-style:normal'>§<span style='font:7.0pt "Times New Roman"'> 1411 +</span></span>Тенденции развития процессоров</h4> 1412 + 1413 +<h4 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1414 +Wingdings;font-style:normal'>§<span style='font:7.0pt "Times New Roman"'> 1415 +</span></span>CLR- и Windows-потоки</h4> 1416 + 1417 +<h4 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1418 +Wingdings;font-style:normal'>§<span style='font:7.0pt "Times New Roman"'> 1419 +</span></span>Потоки для асинхронных вычислительных операций</h4> 1420 + 1421 +<h4 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1422 +Wingdings;font-style:normal'>§<span style='font:7.0pt "Times New Roman"'> 1423 +</span></span>Причины использования потоков</h4> 1424 + 1425 +<h4 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1426 +Wingdings;font-style:normal'>§<span style='font:7.0pt "Times New Roman"'> 1427 +</span></span>Планирование и приоритеты потоков</h4> 1428 + 1429 +<h4 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1430 +Wingdings;font-style:normal'>§<span style='font:7.0pt "Times New Roman"'> 1431 +</span></span>Фоновые и активные потоки</h4> 1432 + 1433 +<h4 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1434 +Wingdings;font-style:normal'>§<span style='font:7.0pt "Times New Roman"'> 1435 +</span></span>Что дальше?</h4> 1436 + 1437 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 1438 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 1439 +27. Асинхронные вычислительные операции</h2> 1440 + 1441 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1442 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Пул 1443 +потоков в CLR</h3> 1444 + 1445 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1446 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Простые 1447 +вычислительные операции</h3> 1448 + 1449 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1450 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Контексты 1451 +исполнения</h3> 1452 + 1453 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1454 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Скоординированная 1455 +отмена</h3> 1456 + 1457 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1458 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Задания</h3> 1459 + 1460 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1461 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1462 +</span></span>Завершение задания и получение результата</h4> 1463 + 1464 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1465 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1466 +</span></span>Отмена задания</h4> 1467 + 1468 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1469 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1470 +</span></span>Автоматический запуск задания по завершении предыдущего </h4> 1471 + 1472 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1473 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1474 +</span></span>Дочерние задания</h4> 1475 + 1476 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1477 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1478 +</span></span>Структура задания</h4> 1479 + 1480 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1481 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1482 +</span></span>Фабрики заданий</h4> 1483 + 1484 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1485 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1486 +</span></span>Планировщики заданий</h4> 1487 + 1488 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span lang=EN-US 1489 +style='font-family:Wingdings'>§<span style='font:7.0pt "Times New Roman"'> 1490 +</span></span>Методы <span lang=EN-US>For, ForEach </span>и <span lang=EN-US>Invoke 1491 +</span>класса <span lang=EN-US>Parallel</span></h3> 1492 + 1493 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1494 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Встроенный 1495 +язык параллельных запросов</h3> 1496 + 1497 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1498 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Периодические 1499 +вычислительные операции </h3> 1500 + 1501 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1502 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1503 +</span></span>Разновидности таймеров</h4> 1504 + 1505 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1506 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Как 1507 +пул управляет потоками</h3> 1508 + 1509 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1510 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1511 +</span></span>Ограничение количества потоков в пуле</h4> 1512 + 1513 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1514 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1515 +</span></span>Управление рабочими потоками</h4> 1516 + 1517 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 1518 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 1519 +28. Асинхронные операции ввода-вывода</h2> 1520 + 1521 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1522 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Операции 1523 +ввода-вывода в Windows</h3> 1524 + 1525 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1526 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Асинхронные 1527 +функции C#</h3> 1528 + 1529 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1530 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Преобразование 1531 +асинхронной функции в конечный автомат</h3> 1532 + 1533 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1534 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Расширяемость 1535 +асинхронных функций</h3> 1536 + 1537 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1538 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Асинхронные 1539 +функции и обработчики событий</h3> 1540 + 1541 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1542 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Асинхронные 1543 +функции в FCL</h3> 1544 + 1545 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1546 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Асинхронные 1547 +функции и исключения</h3> 1548 + 1549 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1550 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Другие 1551 +возможности асинхронных функций</h3> 1552 + 1553 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1554 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Потоковые 1555 +модели приложений</h3> 1556 + 1557 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1558 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Асинхронная 1559 +реализация сервера</h3> 1560 + 1561 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1562 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Отмена 1563 +операций ввода-вывода</h3> 1564 + 1565 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1566 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1567 +</span></span>Некоторые операции ввода-вывода должны выполняться синхронно</h4> 1568 + 1569 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1570 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1571 +</span></span>Проблемы FileStream</h4> 1572 + 1573 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1574 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Приоритеты 1575 +запросов ввода-вывода</h3> 1576 + 1577 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 1578 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 1579 +29. Примитивные конструкции синхронизации потоков</h2> 1580 + 1581 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1582 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Библиотеки 1583 +классов и безопасность потоков</h3> 1584 + 1585 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1586 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Примитивные 1587 +конструкции пользовательского режима </h3> 1588 + 1589 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1590 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>и режима 1591 +ядра</h3> 1592 + 1593 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1594 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Конструкции 1595 +пользовательского режима</h3> 1596 + 1597 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1598 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1599 +</span></span>Volatile-конструкции</h4> 1600 + 1601 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1602 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1603 +</span></span>Interlocked-конструкции</h4> 1604 + 1605 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1606 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1607 +</span></span>Реализация простой циклической блокировки</h4> 1608 + 1609 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1610 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1611 +</span></span>Универсальный Interlocked-паттерн</h4> 1612 + 1613 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1614 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Конструкции 1615 +режима ядра</h3> 1616 + 1617 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1618 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1619 +</span></span>События</h4> 1620 + 1621 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1622 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1623 +</span></span>Семафоры</h4> 1624 + 1625 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1626 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1627 +</span></span>Мьютексы</h4> 1628 + 1629 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 1630 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 1631 +30. Гибридные конструкции синхронизации потоков</h2> 1632 + 1633 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1634 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Простая 1635 +гибридная блокировка</h3> 1636 + 1637 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1638 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Зацикливание, 1639 +владение потоком и рекурсия</h3> 1640 + 1641 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1642 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Гибридные 1643 +конструкции в FCL</h3> 1644 + 1645 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1646 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1647 +</span></span>Классы ManualResetEventSlim и SemaphoreSlim</h4> 1648 + 1649 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1650 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1651 +</span></span>Класс Monitor и блоки синхронизации</h4> 1652 + 1653 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1654 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1655 +</span></span>Класс ReaderWriterLockSlim</h4> 1656 + 1657 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span lang=EN-US 1658 +style='font-family:Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1659 +</span></span>Класс <span lang=EN-US>OneManyLock</span></h4> 1660 + 1661 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span lang=EN-US 1662 +style='font-family:Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1663 +</span></span>Класс <span lang=EN-US>CountdownEvent</span></h4> 1664 + 1665 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span lang=EN-US 1666 +style='font-family:Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1667 +</span></span>Класс <span lang=EN-US>Barrier</span></h4> 1668 + 1669 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1670 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1671 +</span></span>Выводы по гибридным конструкциям</h4> 1672 + 1673 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1674 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Блокировка 1675 +с двойной проверкой</h3> 1676 + 1677 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1678 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Паттерн 1679 +условной переменной</h3> 1680 + 1681 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1682 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Асинхронная 1683 +синхронизация</h3> 1684 + 1685 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1686 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Классы 1687 +коллекций для параллельного доступа</h3> 1688 + 1689 +</div> 1690 + 1691 +</body> 1692 + 1693 +</html> 1694 + 1695 +{{/html}} 1696 + 1697 +(% class="WordSection1" %) 1698 +((( 1699 +(% style="margin-left:36.0pt;text-indent:-18.0pt" %) 1700 += (% style="font-family:Symbol" %)·(% style="font-family: Symbol; font: 7pt ~"Times New Roman~"" %) (%%)Часть I. Основы CLR = 1701 + 1702 +(% style="margin-left:72.0pt;text-indent:-18.0pt" %) 1703 +== (% style="font-family:~"Courier New~"" %)o(% style="font-family: ~"Courier New~"; font: 7pt ~"Times New Roman~"" %) (%%)Глава 1. Модель выполнения кода в среде CLR == 1704 + 1705 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1706 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Компиляция исходного кода в управляемые модули === 1707 + 1708 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1709 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Объединение управляемых модулей в сборку === 1710 + 1711 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1712 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Загрузка CLR === 1713 + 1714 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1715 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Исполнение кода сборки === 1716 + 1717 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 1718 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)IL-код и верификация ==== 1719 + 1720 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 1721 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Небезопасный код ==== 1722 + 1723 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 1724 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)IL и защита интеллектуальной собственности ==== 1725 + 1726 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1727 +=== (% lang="EN-US" style="font-family:Wingdings" %)§(% lang="EN-US" style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (% lang="EN-US" %)NGen.exe(%%) === 1728 + 1729 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1730 +=== (% lang="EN-US" style="font-family:Wingdings" %)§(% lang="EN-US" style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Библиотека (% lang="EN-US" %)FCL(%%) === 1731 + 1732 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1733 +=== (% lang="EN-US" style="font-family:Wingdings" %)§(% lang="EN-US" style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (% lang="EN-US" %)CTS(%%) === 1734 + 1735 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1736 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)CLS === 1737 + 1738 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1739 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Взаимодействие с неуправляемым кодом === 1740 + 1741 +(% style="margin-left:72.0pt;text-indent:-18.0pt" %) 1742 +== (% style="font-family:~"Courier New~"" %)o(% style="font-family: ~"Courier New~"; font: 7pt ~"Times New Roman~"" %) (%%)Глава 2. Компоновка, упаковка, развертывание и администрирование приложений и типов == 1743 + 1744 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1745 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Задачи развертывания в (% lang="EN-US" %).(%%)NET Framework === 1746 + 1747 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1748 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Компоновка типов в модуль === 1749 + 1750 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 1751 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Файл параметров ==== 1752 + 1753 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1754 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Несколько слов о метаданных === 1755 + 1756 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1757 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Объединение модулей для создания сборки === 1758 + 1759 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 1760 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Добавление сборок в проект в среде Visual Studio ==== 1761 + 1762 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 1763 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Использование утилиты Assembly Linker ==== 1764 + 1765 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 1766 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Включение в сборку файлов ресурсов ==== 1767 + 1768 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1769 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Ресурсы со сведениями о версии сборки === 1770 + 1771 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 1772 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Номера версии ==== 1773 + 1774 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1775 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Региональные стандарты === 1776 + 1777 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1778 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Развертывание простых приложений (закрытое развертывание сборок) === 1779 + 1780 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1781 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Простое средство администрирования (конфигурационный файл) === 1782 + 1783 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 1784 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Алгоритм поиска файлов сборки ==== 1785 + 1786 +(% style="margin-left:72.0pt;text-indent:-18.0pt" %) 1787 +== (% style="font-family:~"Courier New~"" %)o(% style="font-family: ~"Courier New~"; font: 7pt ~"Times New Roman~"" %) (%%)Глава 3. Совместно используемые сборки и сборки со строгим именем == 1788 + 1789 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1790 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Два вида сборок — два вида развертывания === 1791 + 1792 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1793 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Назначение сборке строгого имени === 1794 + 1795 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1796 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Глобальный кэш сборок === 1797 + 1798 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1799 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Построение сборки, ссылающейся на сборку со строгим именем === 1800 + 1801 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1802 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Устойчивость сборок со строгими именами к несанкционированной модификации === 1803 + 1804 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1805 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Отложенное подписание === 1806 + 1807 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1808 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Закрытое развертывание сборок со строгими именами === 1809 + 1810 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1811 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Как исполняющая среда разрешает ссылки на типы === 1812 + 1813 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1814 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Дополнительные административные средства (конфигурационные файлы) === 1815 + 1816 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 1817 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Управление версиями при помощи политики издателя ==== 1818 + 1819 +(% style="margin-left:36.0pt;text-indent:-18.0pt" %) 1820 += (% style="font-family:Symbol" %)·(% style="font-family: Symbol; font: 7pt ~"Times New Roman~"" %) (%%)Часть II. Проектирование типов = 1821 + 1822 +(% style="margin-left:72.0pt;text-indent:-18.0pt" %) 1823 +== (% style="font-family:~"Courier New~"" %)o(% style="font-family: ~"Courier New~"; font: 7pt ~"Times New Roman~"" %) (%%)Глава 4. Основы типов == 1824 + 1825 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1826 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Все типы — производные от System.Object === 1827 + 1828 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1829 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Приведение типов === 1830 + 1831 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 1832 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Приведение типов в C# с помощью операторов is и as ==== 1833 + 1834 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1835 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Пространства имен и сборки === 1836 + 1837 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 1838 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Связь между сборками и пространством имен ==== 1839 + 1840 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1841 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Как разные компоненты взаимодействуют во время выполнения === 1842 + 1843 +(% style="margin-left:72.0pt;text-indent:-18.0pt" %) 1844 +== (% style="font-family:~"Courier New~"" %)o(% style="font-family: ~"Courier New~"; font: 7pt ~"Times New Roman~"" %) (%%)Глава 5. Примитивные, ссылочные и значимые типы == 1845 + 1846 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1847 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Примитивные типы в языках программирования === 1848 + 1849 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 1850 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Проверяемые и непроверяемые операции для примитивных типов ==== 1851 + 1852 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1853 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Ссылочные и значимые типы === 1854 + 1855 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 1856 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Как CLR управляет размещением полей для типа ==== 1857 + 1858 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1859 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Упаковка и распаковка значимых типов === 1860 + 1861 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 1862 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Изменение полей в упакованных значимых типах посредством интерфейсов (и почему этого лучше не делать) ==== 1863 + 1864 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 1865 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Равенство и тождество объектов ==== 1866 + 1867 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1868 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Хеш-коды объектов === 1869 + 1870 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1871 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Примитивный тип данных dynamic === 1872 + 1873 +(% style="margin-left:72.0pt;text-indent:-18.0pt" %) 1874 +== (% style="font-family:~"Courier New~"" %)o(% style="font-family: ~"Courier New~"; font: 7pt ~"Times New Roman~"" %) (%%)Глава 6. Основные сведения о членах и типах == 1875 + 1876 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1877 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Члены типа === 1878 + 1879 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1880 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Видимость типа === 1881 + 1882 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 1883 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Дружественные сборки ==== 1884 + 1885 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1886 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Доступ к членам типов === 1887 + 1888 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1889 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Статические классы === 1890 + 1891 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1892 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Частичные классы, структуры и интерфейсы === 1893 + 1894 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1895 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Компоненты, полиморфизм и версии === 1896 + 1897 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 1898 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Вызов виртуальных методов, свойств и событий в CLR ==== 1899 + 1900 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 1901 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Разумное использование видимости типов и модификаторов доступа к членам ==== 1902 + 1903 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 1904 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Работа с виртуальными методами при управлении версиями типов ==== 1905 + 1906 +(% style="margin-left:72.0pt;text-indent:-18.0pt" %) 1907 +== (% style="font-family:~"Courier New~"" %)o(% style="font-family: ~"Courier New~"; font: 7pt ~"Times New Roman~"" %) (%%)Глава 7. Константы и поля == 1908 + 1909 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1910 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Константы === 1911 + 1912 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1913 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Поля === 1914 + 1915 +(% style="margin-left:72.0pt;text-indent:-18.0pt" %) 1916 +== (% style="font-family:~"Courier New~"" %)o(% style="font-family: ~"Courier New~"; font: 7pt ~"Times New Roman~"" %) (%%)Глава 8. Методы == 1917 + 1918 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1919 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Конструкторы экземпляров и классы (ссылочные типы) === 1920 + 1921 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1922 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Конструкторы экземпляров и структуры (значимые типы) === 1923 + 1924 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1925 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Конструкторы типов === 1926 + 1927 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1928 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Методы перегруженных операторов === 1929 + 1930 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 1931 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Операторы и взаимодействие языков программирования ==== 1932 + 1933 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 1934 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Особое мнение автора о правилах Microsoft, связанных с именами методов операторов ==== 1935 + 1936 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1937 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Методы операторов преобразования === 1938 + 1939 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1940 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Методы расширения === 1941 + 1942 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 1943 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Правила и рекомендации ==== 1944 + 1945 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 1946 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Расширение разных типов методами расширения ==== 1947 + 1948 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 1949 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Атрибут расширения ==== 1950 + 1951 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1952 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Частичные методы === 1953 + 1954 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 1955 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Правила и рекомендации ==== 1956 + 1957 +(% style="margin-left:72.0pt;text-indent:-18.0pt" %) 1958 +== (% style="font-family:~"Courier New~"" %)o(% style="font-family: ~"Courier New~"; font: 7pt ~"Times New Roman~"" %) (%%)Глава 9. Параметры == 1959 + 1960 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1961 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Необязательные и именованные параметры === 1962 + 1963 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 1964 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Правила использования параметров. ==== 1965 + 1966 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 1967 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Атрибут DefaultParameterValue и необязательные атрибуты ==== 1968 + 1969 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1970 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Неявно типизированные локальные переменные === 1971 + 1972 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1973 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Передача параметров в метод по ссылке === 1974 + 1975 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1976 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Передача переменного количества аргументов === 1977 + 1978 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1979 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Типы параметров и возвращаемых значений === 1980 + 1981 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1982 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Константность === 1983 + 1984 +(% style="margin-left:72.0pt;text-indent:-18.0pt" %) 1985 +== (% style="font-family:~"Courier New~"" %)o(% style="font-family: ~"Courier New~"; font: 7pt ~"Times New Roman~"" %) (%%)Глава 10. Свойства == 1986 + 1987 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 1988 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Свойства без параметров === 1989 + 1990 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 1991 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Автоматически реализуемые свойства ==== 1992 + 1993 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 1994 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Осторожный подход к определению свойств ==== 1995 + 1996 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 1997 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Свойства и отладчик Visual Studio ==== 1998 + 1999 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2000 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Инициализаторы объектов и коллекций ==== 2001 + 2002 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2003 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Анонимные типы ==== 2004 + 2005 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2006 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Тип System.Tuple ==== 2007 + 2008 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2009 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Свойства с параметрами === 2010 + 2011 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2012 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Выбор главного свойства с параметрами ==== 2013 + 2014 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2015 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Производительность при вызове методов доступа === 2016 + 2017 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2018 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Доступность методов доступа свойств === 2019 + 2020 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2021 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Обобщенные методы доступа свойств === 2022 + 2023 +(% style="margin-left:72.0pt;text-indent:-18.0pt" %) 2024 +== (% style="font-family:~"Courier New~"" %)o(% style="font-family: ~"Courier New~"; font: 7pt ~"Times New Roman~"" %) (%%)Глава 11. События == 2025 + 2026 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2027 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Разработка типа, поддерживающего событие === 2028 + 2029 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2030 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Этап 1. Определение типа для хранения всей дополнительной информации, передаваемой получателям уведомления о событии === 2031 + 2032 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2033 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Этап 2. Определение члена-события === 2034 + 2035 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2036 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Этап 3. Определение метода, ответственного за уведомление зарегистрированных объектов о событии === 2037 + 2038 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2039 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Этап 4. Определение метода, преобразующего входную информацию в желаемое событие === 2040 + 2041 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2042 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Реализация событий компилятором === 2043 + 2044 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2045 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Создание типа, отслеживающего событие === 2046 + 2047 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2048 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Явное управление регистрацией событий === 2049 + 2050 +(% style="margin-left:72.0pt;text-indent:-18.0pt" %) 2051 +== (% style="font-family:~"Courier New~"" %)o(% style="font-family: ~"Courier New~"; font: 7pt ~"Times New Roman~"" %) (%%)Глава 12. Обобщения == 2052 + 2053 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2054 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Обобщения в библиотеке FCL === 2055 + 2056 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2057 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Инфраструктура обобщений === 2058 + 2059 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2060 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Открытые и закрытые типы ==== 2061 + 2062 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2063 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Обобщенные типы и наследование ==== 2064 + 2065 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2066 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Идентификация обобщенных типов ==== 2067 + 2068 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2069 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Разрастание кода ==== 2070 + 2071 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2072 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Обобщенные интерфейсы === 2073 + 2074 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2075 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Обобщенные делегаты === 2076 + 2077 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2078 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Контравариантные и ковариантные аргументы-типы в делегатах и интерфейсах ==== 2079 + 2080 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2081 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Обобщенные методы === 2082 + 2083 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2084 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Обобщенные методы и выведение типов ==== 2085 + 2086 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2087 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Обобщения и другие члены === 2088 + 2089 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2090 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Верификация и ограничения === 2091 + 2092 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2093 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Основные ограничения ==== 2094 + 2095 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2096 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Дополнительные ограничения ==== 2097 + 2098 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2099 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Ограничения конструктора ==== 2100 + 2101 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2102 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Другие проблемы верификации ==== 2103 + 2104 +(% style="margin-left:72.0pt;text-indent:-18.0pt" %) 2105 +== (% style="font-family:~"Courier New~"" %)o(% style="font-family: ~"Courier New~"; font: 7pt ~"Times New Roman~"" %) (%%)Глава 13(% lang="EN-US" %). (%%)Интерфейсы == 2106 + 2107 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2108 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Наследование в классах и интерфейсах === 2109 + 2110 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2111 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Определение интерфейсов === 2112 + 2113 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2114 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Наследование интерфейсов === 2115 + 2116 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2117 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Подробнее о вызовах интерфейсных методов === 2118 + 2119 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2120 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Явные и неявные реализации интерфейсных методов (что происходит за кулисами) === 2121 + 2122 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2123 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Обобщенные интерфейсы === 2124 + 2125 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2126 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Обобщения и ограничения интерфейса === 2127 + 2128 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2129 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Реализация нескольких интерфейсов с одинаковыми сигнатурами и именами методов === 2130 + 2131 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2132 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Совершенствование безопасности типов за счет явной реализации интерфейсных методов === 2133 + 2134 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2135 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Опасности явной реализации интерфейсных методов === 2136 + 2137 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2138 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Дилемма разработчика: базовый класс или интерфейс? === 2139 + 2140 +(% style="margin-left:36.0pt;text-indent:-18.0pt" %) 2141 += (% style="font-family:Symbol" %)·(% style="font-family: Symbol; font: 7pt ~"Times New Roman~"" %) (%%)Часть III. Основные типы данных = 2142 + 2143 +(% style="margin-left:72.0pt;text-indent:-18.0pt" %) 2144 +== (% style="font-family:~"Courier New~"" %)o(% style="font-family: ~"Courier New~"; font: 7pt ~"Times New Roman~"" %) (%%)Глава 14. Символы, строки и обработка текста == 2145 + 2146 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2147 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Символы === 2148 + 2149 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2150 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Тип System.String === 2151 + 2152 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2153 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Создание строк ==== 2154 + 2155 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2156 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Неизменяемые строки ==== 2157 + 2158 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2159 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Сравнение строк ==== 2160 + 2161 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2162 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Интернирование строк ==== 2163 + 2164 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2165 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Создание пулов строк ==== 2166 + 2167 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2168 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Работа с символами и текстовыми элементами в строке ==== 2169 + 2170 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2171 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Прочие операции со строками ==== 2172 + 2173 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2174 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Эффективное создание строк === 2175 + 2176 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2177 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Создание объекта StringBuilder ==== 2178 + 2179 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2180 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Члены типа StringBuilder ==== 2181 + 2182 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2183 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Получение строкового представления объекта === 2184 + 2185 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2186 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Форматы и региональные стандарты ==== 2187 + 2188 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2189 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Форматирование нескольких объектов в одну строку ==== 2190 + 2191 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2192 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Создание собственного средства форматирования ==== 2193 + 2194 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2195 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Получение объекта посредством разбора строки === 2196 + 2197 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2198 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Кодировки: преобразования между символами и байтами === 2199 + 2200 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2201 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Кодирование и декодирование потоков символов и байтов ==== 2202 + 2203 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2204 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Кодирование и декодирование строк в кодировке Base-64 ==== 2205 + 2206 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2207 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Защищенные строки === 2208 + 2209 +(% style="margin-left:72.0pt;text-indent:-18.0pt" %) 2210 +== (% style="font-family:~"Courier New~"" %)o(% style="font-family: ~"Courier New~"; font: 7pt ~"Times New Roman~"" %) (%%)Глава 15. Перечислимые типы и битовые флаги == 2211 + 2212 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2213 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Перечислимые типы === 2214 + 2215 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2216 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Битовые флаги === 2217 + 2218 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2219 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Добавление методов к перечислимым типам === 2220 + 2221 +(% style="margin-left:72.0pt;text-indent:-18.0pt" %) 2222 +== (% style="font-family:~"Courier New~"" %)o(% style="font-family: ~"Courier New~"; font: 7pt ~"Times New Roman~"" %) (%%)Глава 16. Массивы == 2223 + 2224 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2225 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Инициализация элементов массива === 2226 + 2227 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2228 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Приведение типов в массивах === 2229 + 2230 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2231 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Базовый класс System Array === 2232 + 2233 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2234 +=== (% lang="EN-US" style="font-family:Wingdings" %)§(% lang="EN-US" style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Реализация интерфейсов (% lang="EN-US" %)IEnumerable, ICollection (%%)и (% lang="EN-US" %)IList(%%) === 2235 + 2236 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2237 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Передача и возврат массивов === 2238 + 2239 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2240 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Массивы с ненулевой нижней границей === 2241 + 2242 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2243 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Внутренняя реализация массивов === 2244 + 2245 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2246 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Небезопасный доступ к массивам и массивы фиксированного размера === 2247 + 2248 +(% style="margin-left:72.0pt;text-indent:-18.0pt" %) 2249 +== (% style="font-family:~"Courier New~"" %)o(% style="font-family: ~"Courier New~"; font: 7pt ~"Times New Roman~"" %) (%%)Глава 17. Делегаты == 2250 + 2251 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2252 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Знакомство с делегатами === 2253 + 2254 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2255 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Обратный вызов статических методов === 2256 + 2257 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2258 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Обратный вызов экземплярных методов === 2259 + 2260 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2261 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Тонкости использования делегатов === 2262 + 2263 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2264 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Обратный вызов нескольких методов (цепочки делегатов) === 2265 + 2266 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2267 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Поддержка цепочек делегатов в C# ==== 2268 + 2269 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2270 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Дополнительные средства управления цепочками делегатов ==== 2271 + 2272 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2273 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Обобщенные делегаты === 2274 + 2275 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2276 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Упрощенный синтаксис работы с делегатами === 2277 + 2278 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2279 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Упрощение 1: не создаем объект делегата ==== 2280 + 2281 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2282 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Упрощение 2: не определяем метод обратного вызова ==== 2283 + 2284 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2285 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Упрощение 3: не создаем обертку для локальных переменных для передачи их методу обратного вызова ==== 2286 + 2287 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2288 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Делегаты и отражение === 2289 + 2290 +(% style="margin-left:72.0pt;text-indent:-18.0pt" %) 2291 +== (% style="font-family:~"Courier New~"" %)o(% style="font-family: ~"Courier New~"; font: 7pt ~"Times New Roman~"" %) (%%)Глава 18. Настраиваемые атрибуты == 2292 + 2293 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2294 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Сфера применения настраиваемых атрибутов === 2295 + 2296 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2297 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Определение класса атрибутов === 2298 + 2299 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2300 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Конструктор атрибута и типы данных полей и свойств === 2301 + 2302 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2303 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Выявление настраиваемых атрибутов === 2304 + 2305 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2306 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Сравнение экземпляров атрибута === 2307 + 2308 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2309 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Выявление настраиваемых атрибутов без создания объектов, производных от Attribute === 2310 + 2311 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2312 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Условные атрибуты === 2313 + 2314 +(% style="margin-left:72.0pt;text-indent:-18.0pt" %) 2315 +== (% style="font-family:~"Courier New~"" %)o(% style="font-family: ~"Courier New~"; font: 7pt ~"Times New Roman~"" %) (%%)Глава 19. Null-совместимые значимые типы == 2316 + 2317 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2318 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Поддержка в C# null-совместимых значимых типов === 2319 + 2320 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2321 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Оператор объединения null-совместимых значений === 2322 + 2323 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2324 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Поддержка в CLR null-совместимых значимых типов === 2325 + 2326 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2327 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Упаковка null-совместимых значимых типов ==== 2328 + 2329 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2330 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Распаковка null-совместимых значимых типов ==== 2331 + 2332 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2333 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Вызов метода GetType через null-совместимый значимый тип ==== 2334 + 2335 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2336 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Вызов интерфейсных методов через null-совместимый значимый тип ==== 2337 + 2338 +(% style="margin-left:36.0pt;text-indent:-18.0pt" %) 2339 += (% style="font-family:Symbol" %)·(% style="font-family: Symbol; font: 7pt ~"Times New Roman~"" %) (%%)Часть IV. Ключевые механизмы = 2340 + 2341 +(% style="margin-left:72.0pt;text-indent:-18.0pt" %) 2342 +== (% style="font-family:~"Courier New~"" %)o(% style="font-family: ~"Courier New~"; font: 7pt ~"Times New Roman~"" %) (%%)Глава 20. Исключения и управление состоянием 496 == 2343 + 2344 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2345 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Определение «исключения» === 2346 + 2347 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2348 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Механика обработки исключений === 2349 + 2350 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2351 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Блок try ==== 2352 + 2353 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2354 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Блок catch ==== 2355 + 2356 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2357 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Блок finally ==== 2358 + 2359 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2360 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)CLS-совместимые и CLS-несовместимые исключения ==== 2361 + 2362 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2363 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Класс System(% lang="EN-US" %).(%%)Exception === 2364 + 2365 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2366 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Классы исключений, определенные в FCL === 2367 + 2368 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2369 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Генерирование исключений === 2370 + 2371 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2372 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Создание классов исключений === 2373 + 2374 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2375 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Продуктивность вместо надежности === 2376 + 2377 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2378 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Приемы работы с исключениями === 2379 + 2380 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2381 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Активно используйте блоки finally ==== 2382 + 2383 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2384 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Не надо перехватывать все исключения ==== 2385 + 2386 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2387 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Корректное восстановление после исключения ==== 2388 + 2389 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2390 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Отмена незавершенных операций при невосстановимых исключениях === 2391 + 2392 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2393 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Сокрытие деталей реализации для сохранения контракта === 2394 + 2395 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2396 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Необработанные исключения === 2397 + 2398 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2399 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Отладка исключений === 2400 + 2401 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2402 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Скорость обработки исключений === 2403 + 2404 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2405 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Области ограниченного выполнения === 2406 + 2407 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2408 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Контракты кода === 2409 + 2410 +(% style="margin-left:72.0pt;text-indent:-18.0pt" %) 2411 +== (% style="font-family:~"Courier New~"" %)o(% style="font-family: ~"Courier New~"; font: 7pt ~"Times New Roman~"" %) (%%)Глава 21. Автоматическое управление памятью (уборка мусора) == 2412 + 2413 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2414 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Управляемая куча === 2415 + 2416 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2417 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Выделение ресурсов из управляемой кучи ==== 2418 + 2419 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2420 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Алгоритм уборки мусора ==== 2421 + 2422 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2423 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Уборка мусора и отладка ==== 2424 + 2425 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2426 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Поколения === 2427 + 2428 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2429 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Запуск уборки мусора ==== 2430 + 2431 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2432 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Большие объекты ==== 2433 + 2434 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2435 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Режимы уборки мусора ==== 2436 + 2437 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2438 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Программное управление уборщиком мусора ==== 2439 + 2440 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2441 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Мониторинг использования памяти приложением ==== 2442 + 2443 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2444 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Освобождение ресурсов при помощи механизма финализации === 2445 + 2446 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2447 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Типы, использующие системные ресурсы ==== 2448 + 2449 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2450 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Интересные аспекты зависимостей ==== 2451 + 2452 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2453 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Другие возможности уборщика мусора для работы с системными ресурсами ==== 2454 + 2455 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2456 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Внутренняя реализация финализации ==== 2457 + 2458 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2459 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Мониторинг и контроль времени жизни объектов === 2460 + 2461 +(% style="margin-left:72.0pt;text-indent:-18.0pt" %) 2462 +== (% style="font-family:~"Courier New~"" %)o(% style="font-family: ~"Courier New~"; font: 7pt ~"Times New Roman~"" %) (%%)Глава 22. Хостинг CLR и домены приложений == 2463 + 2464 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2465 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Хостинг CLR === 2466 + 2467 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2468 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Домены приложений === 2469 + 2470 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2471 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Доступ к объектам из других доменов ==== 2472 + 2473 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2474 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Выгрузка доменов === 2475 + 2476 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2477 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Мониторинг доменов === 2478 + 2479 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2480 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Уведомление о первом управляемом исключении домена === 2481 + 2482 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2483 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Использование хостами доменов приложений === 2484 + 2485 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2486 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Исполняемые приложения ==== 2487 + 2488 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2489 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Полнофункциональные интернет-приложения Silverlight ==== 2490 + 2491 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2492 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Microsoft ASPNET и веб-службы XML ==== 2493 + 2494 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2495 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Microsoft SQL Server ==== 2496 + 2497 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2498 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Будущее и мечты ==== 2499 + 2500 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2501 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Нетривиальное управление хостингом === 2502 + 2503 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2504 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Применение управляемого кода ==== 2505 + 2506 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2507 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Разработка надежных хост-приложений ==== 2508 + 2509 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2510 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Возвращение потока в хост ==== 2511 + 2512 +(% style="margin-left:72.0pt;text-indent:-18.0pt" %) 2513 +== (% style="font-family:~"Courier New~"" %)o(% style="font-family: ~"Courier New~"; font: 7pt ~"Times New Roman~"" %) (%%)Глава 23. Загрузка сборок и отражение == 2514 + 2515 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2516 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Загрузка сборок === 2517 + 2518 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2519 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Использование отражения для создания динамически расширяемых приложений === 2520 + 2521 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2522 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Производительность отражения === 2523 + 2524 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2525 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Нахождение типов, определенных в сборке ==== 2526 + 2527 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2528 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Объект Type ==== 2529 + 2530 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2531 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Создание иерархии типов, производных от Exception ==== 2532 + 2533 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2534 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Создание экземпляра типа ==== 2535 + 2536 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2537 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Создание приложений с поддержкой подключаемых компонентов === 2538 + 2539 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2540 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Нахождение членов типа путем отражения ==== 2541 + 2542 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2543 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Нахождение членов типа ==== 2544 + 2545 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2546 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Обращение к членам типов ==== 2547 + 2548 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2549 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Использование дескрипторов привязки для снижения потребления памяти процессом ==== 2550 + 2551 +(% style="margin-left:72.0pt;text-indent:-18.0pt" %) 2552 +== (% style="font-family:~"Courier New~"" %)o(% style="font-family: ~"Courier New~"; font: 7pt ~"Times New Roman~"" %) (%%)Глава 24. Сериализация == 2553 + 2554 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2555 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Практический пример сериализации/десериализации === 2556 + 2557 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2558 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Сериализуемые типы === 2559 + 2560 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2561 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Управление сериализацией и десериализацией === 2562 + 2563 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2564 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Сериализация экземпляров типа === 2565 + 2566 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2567 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Управление сериализованными и десериализованными данными === 2568 + 2569 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2570 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Определение типа, реализующего интерфейс ISerializable, не реализуемый базовым классом ==== 2571 + 2572 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2573 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Контексты потока ввода-вывода === 2574 + 2575 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2576 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Сериализация в другой тип и десериализация в другой объект === 2577 + 2578 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2579 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Суррогаты сериализации === 2580 + 2581 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2582 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Цепочка селекторов суррогатов ==== 2583 + 2584 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2585 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Переопределение сборки и/или типа при десериализации объекта === 2586 + 2587 +(% style="margin-left:72.0pt;text-indent:-18.0pt" %) 2588 +== (% style="font-family:~"Courier New~"" %)o(% style="font-family: ~"Courier New~"; font: 7pt ~"Times New Roman~"" %) (%%)Глава 25. Взаимодействие с компонентами WinRT == 2589 + 2590 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2591 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Проекции уровня CLR и правила системы типов компонентов WinRT === 2592 + 2593 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2594 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Основные концепции системы типов WinRT ==== 2595 + 2596 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2597 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Проекции уровня .NET Framework === 2598 + 2599 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2600 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Асинхронные вызовы WinRT API из кода NET ==== 2601 + 2602 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2603 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Взаимодействия между потоками WinRT и потоками NET ==== 2604 + 2605 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2606 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Передача блоков данных между CLR и WinRT ==== 2607 + 2608 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2609 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Определение компонентов WinRT в коде C# === 2610 + 2611 +(% style="margin-left:36.0pt;text-indent:-18.0pt" %) 2612 += (% style="font-family:Symbol" %)·(% style="font-family: Symbol; font: 7pt ~"Times New Roman~"" %) (%%)Часть V. Многопоточность = 2613 + 2614 +(% style="margin-left:72.0pt;text-indent:-18.0pt" %) 2615 +== (% style="font-family:~"Courier New~"" %)o(% style="font-family: ~"Courier New~"; font: 7pt ~"Times New Roman~"" %) (%%)Глава 26. Потоки исполнения == 2616 + 2617 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2618 +==== (% style="font-family:Wingdings; font-style:normal" %)§(% style="font-family: Wingdings; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Для чего Windows поддерживает потоки? ==== 2619 + 2620 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2621 +==== (% style="font-family:Wingdings; font-style:normal" %)§(% style="font-family: Wingdings; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Ресурсоемкость потоков ==== 2622 + 2623 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2624 +==== (% style="font-family:Wingdings; font-style:normal" %)§(% style="font-family: Wingdings; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Так дальше не пойдет! ==== 2625 + 2626 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2627 +==== (% style="font-family:Wingdings; font-style:normal" %)§(% style="font-family: Wingdings; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Тенденции развития процессоров ==== 2628 + 2629 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2630 +==== (% style="font-family:Wingdings; font-style:normal" %)§(% style="font-family: Wingdings; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)CLR- и Windows-потоки ==== 2631 + 2632 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2633 +==== (% style="font-family:Wingdings; font-style:normal" %)§(% style="font-family: Wingdings; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Потоки для асинхронных вычислительных операций ==== 2634 + 2635 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2636 +==== (% style="font-family:Wingdings; font-style:normal" %)§(% style="font-family: Wingdings; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Причины использования потоков ==== 2637 + 2638 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2639 +==== (% style="font-family:Wingdings; font-style:normal" %)§(% style="font-family: Wingdings; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Планирование и приоритеты потоков ==== 2640 + 2641 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2642 +==== (% style="font-family:Wingdings; font-style:normal" %)§(% style="font-family: Wingdings; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Фоновые и активные потоки ==== 2643 + 2644 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2645 +==== (% style="font-family:Wingdings; font-style:normal" %)§(% style="font-family: Wingdings; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Что дальше? ==== 2646 + 2647 +(% style="margin-left:72.0pt;text-indent:-18.0pt" %) 2648 +== (% style="font-family:~"Courier New~"" %)o(% style="font-family: ~"Courier New~"; font: 7pt ~"Times New Roman~"" %) (%%)Глава 27. Асинхронные вычислительные операции == 2649 + 2650 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2651 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Пул потоков в CLR === 2652 + 2653 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2654 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Простые вычислительные операции === 2655 + 2656 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2657 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Контексты исполнения === 2658 + 2659 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2660 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Скоординированная отмена === 2661 + 2662 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2663 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Задания === 2664 + 2665 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2666 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Завершение задания и получение результата ==== 2667 + 2668 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2669 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Отмена задания ==== 2670 + 2671 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2672 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Автоматический запуск задания по завершении предыдущего ==== 2673 + 2674 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2675 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Дочерние задания ==== 2676 + 2677 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2678 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Структура задания ==== 2679 + 2680 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2681 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Фабрики заданий ==== 2682 + 2683 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2684 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Планировщики заданий ==== 2685 + 2686 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2687 +=== (% lang="EN-US" style="font-family:Wingdings" %)§(% lang="EN-US" style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Методы (% lang="EN-US" %)For, ForEach (%%)и (% lang="EN-US" %)Invoke (%%)класса (% lang="EN-US" %)Parallel(%%) === 2688 + 2689 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2690 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Встроенный язык параллельных запросов === 2691 + 2692 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2693 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Периодические вычислительные операции === 2694 + 2695 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2696 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Разновидности таймеров ==== 2697 + 2698 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2699 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Как пул управляет потоками === 2700 + 2701 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2702 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Ограничение количества потоков в пуле ==== 2703 + 2704 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2705 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Управление рабочими потоками ==== 2706 + 2707 +(% style="margin-left:72.0pt;text-indent:-18.0pt" %) 2708 +== (% style="font-family:~"Courier New~"" %)o(% style="font-family: ~"Courier New~"; font: 7pt ~"Times New Roman~"" %) (%%)Глава 28. Асинхронные операции ввода-вывода == 2709 + 2710 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2711 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Операции ввода-вывода в Windows === 2712 + 2713 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2714 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Асинхронные функции C# === 2715 + 2716 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2717 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Преобразование асинхронной функции в конечный автомат === 2718 + 2719 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2720 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Расширяемость асинхронных функций === 2721 + 2722 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2723 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Асинхронные функции и обработчики событий === 2724 + 2725 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2726 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Асинхронные функции в FCL === 2727 + 2728 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2729 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Асинхронные функции и исключения === 2730 + 2731 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2732 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Другие возможности асинхронных функций === 2733 + 2734 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2735 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Потоковые модели приложений === 2736 + 2737 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2738 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Асинхронная реализация сервера === 2739 + 2740 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2741 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Отмена операций ввода-вывода === 2742 + 2743 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2744 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Некоторые операции ввода-вывода должны выполняться синхронно ==== 2745 + 2746 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2747 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Проблемы FileStream ==== 2748 + 2749 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2750 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Приоритеты запросов ввода-вывода === 2751 + 2752 +(% style="margin-left:72.0pt;text-indent:-18.0pt" %) 2753 +== (% style="font-family:~"Courier New~"" %)o(% style="font-family: ~"Courier New~"; font: 7pt ~"Times New Roman~"" %) (%%)Глава 29. Примитивные конструкции синхронизации потоков == 2754 + 2755 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2756 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Библиотеки классов и безопасность потоков === 2757 + 2758 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2759 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Примитивные конструкции пользовательского режима === 2760 + 2761 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2762 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)и режима ядра === 2763 + 2764 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2765 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Конструкции пользовательского режима === 2766 + 2767 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2768 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Volatile-конструкции ==== 2769 + 2770 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2771 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Interlocked-конструкции ==== 2772 + 2773 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2774 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Реализация простой циклической блокировки ==== 2775 + 2776 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2777 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Универсальный Interlocked-паттерн ==== 2778 + 2779 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2780 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Конструкции режима ядра === 2781 + 2782 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2783 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)События ==== 2784 + 2785 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2786 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Семафоры ==== 2787 + 2788 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2789 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Мьютексы ==== 2790 + 2791 +(% style="margin-left:72.0pt;text-indent:-18.0pt" %) 2792 +== (% style="font-family:~"Courier New~"" %)o(% style="font-family: ~"Courier New~"; font: 7pt ~"Times New Roman~"" %) (%%)Глава 30. Гибридные конструкции синхронизации потоков == 2793 + 2794 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2795 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Простая гибридная блокировка === 2796 + 2797 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2798 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Зацикливание, владение потоком и рекурсия === 2799 + 2800 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2801 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Гибридные конструкции в FCL === 2802 + 2803 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2804 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Классы ManualResetEventSlim и SemaphoreSlim ==== 2805 + 2806 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2807 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Класс Monitor и блоки синхронизации ==== 2808 + 2809 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2810 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Класс ReaderWriterLockSlim ==== 2811 + 2812 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2813 +==== (% lang="EN-US" style="font-family:Symbol; font-style:normal" %)·(% lang="EN-US" style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Класс (% lang="EN-US" %)OneManyLock(%%) ==== 2814 + 2815 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2816 +==== (% lang="EN-US" style="font-family:Symbol; font-style:normal" %)·(% lang="EN-US" style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Класс (% lang="EN-US" %)CountdownEvent(%%) ==== 2817 + 2818 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2819 +==== (% lang="EN-US" style="font-family:Symbol; font-style:normal" %)·(% lang="EN-US" style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Класс (% lang="EN-US" %)Barrier(%%) ==== 2820 + 2821 +(% style="margin-left:144.0pt;text-indent:-18.0pt" %) 2822 +==== (% style="font-family:Symbol; font-style:normal" %)·(% style="font-family: Symbol; font-style: normal; font: 7pt ~"Times New Roman~"" %) (%%)Выводы по гибридным конструкциям ==== 2823 + 2824 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2825 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Блокировка с двойной проверкой === 2826 + 2827 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2828 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Паттерн условной переменной === 2829 + 2830 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2831 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Асинхронная синхронизация === 2832 + 2833 +(% style="margin-left:108.0pt;text-indent:-18.0pt" %) 2834 +=== (% style="font-family:Wingdings" %)§(% style="font-family: Wingdings; font: 7pt ~"Times New Roman~"" %) (%%)Классы коллекций для параллельного доступа === 2835 +))) 2836 + 2837 +(% style="background:url(~"https://wiki.denhome.ru/webjars/wiki%3Axwiki/application-ckeditor-webjar/1.55/plugins/widget/images/handle.png~") rgba(220, 220, 220, 0.5); left:0px; top:-15px" %)[[image:data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==||height="15" role="presentation" title="Нажмите и перетащите, чтобы переместить" width="15"]]