Изменения документа CLR via C# | Джеффри Рихтер
Редактировал(а) Alexandr Fokin 2022/12/12 12:01
отредактировано Alexandr Fokin
на 2020/01/05 18:52
на 2020/01/05 18:52
отредактировано Alexandr Fokin
на 2020/08/09 22:10
на 2020/08/09 22:10
Изменить комментарий:
К данной версии нет комментариев
Комментарий
-
Свойства страницы (2 изменено, 0 добавлено, 0 удалено)
Подробности
- Свойства страницы
-
- Теги
-
... ... @@ -1,0 +1,1 @@ 1 +Book|Книга - Содержимое
-
... ... @@ -1,0 +1,1697 @@ 1 + 2 +{{html}} 3 +<html> 4 + 5 +<head> 6 +<meta http-equiv=Content-Type content="text/html; charset=windows-1251"> 7 +<meta name=Generator content="Microsoft Word 15 (filtered)"> 8 +<style> 9 +<!-- 10 + /* Font Definitions */ 11 + @font-face 12 + {font-family:Wingdings; 13 + panose-1:5 0 0 0 0 0 0 0 0 0;} 14 +@font-face 15 + {font-family:"Cambria Math"; 16 + panose-1:2 4 5 3 5 4 6 3 2 4;} 17 +@font-face 18 + {font-family:"Calibri Light"; 19 + panose-1:2 15 3 2 2 2 4 3 2 4;} 20 +@font-face 21 + {font-family:"Segoe UI"; 22 + panose-1:2 11 5 2 4 2 4 2 2 3;} 23 + /* Style Definitions */ 24 + p.MsoNormal, li.MsoNormal, div.MsoNormal 25 + {margin-top:0cm; 26 + margin-right:0cm; 27 + margin-bottom:8.0pt; 28 + margin-left:0cm; 29 + line-height:107%; 30 + font-size:11.0pt; 31 + font-family:"Calibri",sans-serif;} 32 +h1 33 + {mso-style-link:"Заголовок 1 Знак"; 34 + margin-top:12.0pt; 35 + margin-right:0cm; 36 + margin-bottom:0cm; 37 + margin-left:0cm; 38 + margin-bottom:.0001pt; 39 + line-height:107%; 40 + page-break-after:avoid; 41 + font-size:16.0pt; 42 + font-family:"Calibri Light",sans-serif; 43 + color:#2E74B5; 44 + font-weight:normal;} 45 +h2 46 + {mso-style-link:"Заголовок 2 Знак"; 47 + margin-top:2.0pt; 48 + margin-right:0cm; 49 + margin-bottom:0cm; 50 + margin-left:0cm; 51 + margin-bottom:.0001pt; 52 + line-height:107%; 53 + page-break-after:avoid; 54 + font-size:13.0pt; 55 + font-family:"Calibri Light",sans-serif; 56 + color:#2E74B5; 57 + font-weight:normal;} 58 +h3 59 + {mso-style-link:"Заголовок 3 Знак"; 60 + margin-top:2.0pt; 61 + margin-right:0cm; 62 + margin-bottom:0cm; 63 + margin-left:0cm; 64 + margin-bottom:.0001pt; 65 + line-height:107%; 66 + page-break-after:avoid; 67 + font-size:12.0pt; 68 + font-family:"Calibri Light",sans-serif; 69 + color:#1F4D78; 70 + font-weight:normal;} 71 +h4 72 + {mso-style-link:"Заголовок 4 Знак"; 73 + margin-top:2.0pt; 74 + margin-right:0cm; 75 + margin-bottom:0cm; 76 + margin-left:0cm; 77 + margin-bottom:.0001pt; 78 + line-height:107%; 79 + page-break-after:avoid; 80 + font-size:11.0pt; 81 + font-family:"Calibri Light",sans-serif; 82 + color:#2E74B5; 83 + font-weight:normal; 84 + font-style:italic;} 85 +p.MsoAcetate, li.MsoAcetate, div.MsoAcetate 86 + {mso-style-link:"Текст выноски Знак"; 87 + margin:0cm; 88 + margin-bottom:.0001pt; 89 + font-size:9.0pt; 90 + font-family:"Segoe UI",sans-serif;} 91 +p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph 92 + {margin-top:0cm; 93 + margin-right:0cm; 94 + margin-bottom:8.0pt; 95 + margin-left:36.0pt; 96 + line-height:107%; 97 + font-size:11.0pt; 98 + font-family:"Calibri",sans-serif;} 99 +p.MsoListParagraphCxSpFirst, li.MsoListParagraphCxSpFirst, div.MsoListParagraphCxSpFirst 100 + {margin-top:0cm; 101 + margin-right:0cm; 102 + margin-bottom:0cm; 103 + margin-left:36.0pt; 104 + margin-bottom:.0001pt; 105 + line-height:107%; 106 + font-size:11.0pt; 107 + font-family:"Calibri",sans-serif;} 108 +p.MsoListParagraphCxSpMiddle, li.MsoListParagraphCxSpMiddle, div.MsoListParagraphCxSpMiddle 109 + {margin-top:0cm; 110 + margin-right:0cm; 111 + margin-bottom:0cm; 112 + margin-left:36.0pt; 113 + margin-bottom:.0001pt; 114 + line-height:107%; 115 + font-size:11.0pt; 116 + font-family:"Calibri",sans-serif;} 117 +p.MsoListParagraphCxSpLast, li.MsoListParagraphCxSpLast, div.MsoListParagraphCxSpLast 118 + {margin-top:0cm; 119 + margin-right:0cm; 120 + margin-bottom:8.0pt; 121 + margin-left:36.0pt; 122 + line-height:107%; 123 + font-size:11.0pt; 124 + font-family:"Calibri",sans-serif;} 125 +span.1 126 + {mso-style-name:"Заголовок 1 Знак"; 127 + mso-style-link:"Заголовок 1"; 128 + font-family:"Calibri Light",sans-serif; 129 + color:#2E74B5;} 130 +span.2 131 + {mso-style-name:"Заголовок 2 Знак"; 132 + mso-style-link:"Заголовок 2"; 133 + font-family:"Calibri Light",sans-serif; 134 + color:#2E74B5;} 135 +span.3 136 + {mso-style-name:"Заголовок 3 Знак"; 137 + mso-style-link:"Заголовок 3"; 138 + font-family:"Calibri Light",sans-serif; 139 + color:#1F4D78;} 140 +span.4 141 + {mso-style-name:"Заголовок 4 Знак"; 142 + mso-style-link:"Заголовок 4"; 143 + font-family:"Calibri Light",sans-serif; 144 + color:#2E74B5; 145 + font-style:italic;} 146 +span.a 147 + {mso-style-name:"Текст выноски Знак"; 148 + mso-style-link:"Текст выноски"; 149 + font-family:"Segoe UI",sans-serif;} 150 +.MsoPapDefault 151 + {margin-bottom:8.0pt; 152 + line-height:107%;} 153 +@page WordSection1 154 + {size:595.3pt 841.9pt; 155 + margin:36.0pt 36.0pt 36.0pt 36.0pt;} 156 +div.WordSection1 157 + {page:WordSection1;} 158 + /* List Definitions */ 159 + ol 160 + {margin-bottom:0cm;} 161 +ul 162 + {margin-bottom:0cm;} 163 +--> 164 +</style> 165 + 166 +</head> 167 + 168 +<body lang=RU> 169 + 170 +<div class=WordSection1> 171 + 172 +<h1 style='margin-left:36.0pt;text-indent:-18.0pt'><span style='font-family: 173 +Symbol'>·<span style='font:7.0pt "Times New Roman"'> 174 +</span></span>Часть I. Основы CLR</h1> 175 + 176 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 177 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 178 +1. Модель выполнения кода в среде CLR</h2> 179 + 180 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 181 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Компиляция 182 +исходного кода в управляемые модули</h3> 183 + 184 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 185 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Объединение 186 +управляемых модулей в сборку</h3> 187 + 188 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 189 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Загрузка 190 +CLR</h3> 191 + 192 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 193 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Исполнение 194 +кода сборки </h3> 195 + 196 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 197 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 198 +</span></span>IL-код и верификация</h4> 199 + 200 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 201 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 202 +</span></span>Небезопасный код</h4> 203 + 204 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 205 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 206 +</span></span>IL и защита интеллектуальной собственности</h4> 207 + 208 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span lang=EN-US 209 +style='font-family:Wingdings'>§<span style='font:7.0pt "Times New Roman"'> 210 +</span></span><span lang=EN-US>NGen.exe</span></h3> 211 + 212 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span lang=EN-US 213 +style='font-family:Wingdings'>§<span style='font:7.0pt "Times New Roman"'> 214 +</span></span>Библиотека <span lang=EN-US>FCL </span></h3> 215 + 216 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span lang=EN-US 217 +style='font-family:Wingdings'>§<span style='font:7.0pt "Times New Roman"'> 218 +</span></span><span lang=EN-US>CTS</span></h3> 219 + 220 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 221 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>CLS</h3> 222 + 223 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 224 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Взаимодействие 225 +с неуправляемым кодом</h3> 226 + 227 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 228 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 229 +2. Компоновка, упаковка, развертывание и администрирование приложений и типов</h2> 230 + 231 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 232 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Задачи 233 +развертывания в <span lang=EN-US>.</span>NET Framework</h3> 234 + 235 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 236 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Компоновка 237 +типов в модуль</h3> 238 + 239 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 240 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 241 +</span></span>Файл параметров</h4> 242 + 243 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 244 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Несколько 245 +слов о метаданных</h3> 246 + 247 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 248 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Объединение 249 +модулей для создания сборки</h3> 250 + 251 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 252 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 253 +</span></span>Добавление сборок в проект в среде Visual Studio</h4> 254 + 255 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 256 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 257 +</span></span>Использование утилиты Assembly Linker</h4> 258 + 259 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 260 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 261 +</span></span>Включение в сборку файлов ресурсов</h4> 262 + 263 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 264 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Ресурсы 265 +со сведениями о версии сборки</h3> 266 + 267 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 268 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 269 +</span></span>Номера версии</h4> 270 + 271 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 272 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Региональные 273 +стандарты</h3> 274 + 275 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 276 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Развертывание 277 +простых приложений (закрытое развертывание сборок)</h3> 278 + 279 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 280 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Простое 281 +средство администрирования (конфигурационный файл)</h3> 282 + 283 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 284 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 285 +</span></span>Алгоритм поиска файлов сборки</h4> 286 + 287 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 288 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 289 +3. Совместно используемые сборки и сборки со строгим именем</h2> 290 + 291 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 292 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Два 293 +вида сборок — два вида развертывания</h3> 294 + 295 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 296 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Назначение 297 +сборке строгого имени</h3> 298 + 299 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 300 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Глобальный 301 +кэш сборок</h3> 302 + 303 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 304 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Построение 305 +сборки, ссылающейся на сборку со строгим именем</h3> 306 + 307 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 308 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Устойчивость 309 +сборок со строгими именами к несанкционированной модификации</h3> 310 + 311 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 312 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Отложенное 313 +подписание</h3> 314 + 315 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 316 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Закрытое 317 +развертывание сборок со строгими именами</h3> 318 + 319 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 320 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Как 321 +исполняющая среда разрешает ссылки на типы</h3> 322 + 323 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 324 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Дополнительные 325 +административные средства (конфигурационные файлы)</h3> 326 + 327 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 328 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 329 +</span></span>Управление версиями при помощи политики издателя</h4> 330 + 331 +<h1 style='margin-left:36.0pt;text-indent:-18.0pt'><span style='font-family: 332 +Symbol'>·<span style='font:7.0pt "Times New Roman"'> 333 +</span></span>Часть II. Проектирование типов</h1> 334 + 335 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 336 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 337 +4. Основы типов</h2> 338 + 339 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 340 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Все 341 +типы — производные от System.Object</h3> 342 + 343 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 344 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Приведение 345 +типов</h3> 346 + 347 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 348 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 349 +</span></span>Приведение типов в C# с помощью операторов is и as</h4> 350 + 351 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 352 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Пространства 353 +имен и сборки</h3> 354 + 355 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 356 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 357 +</span></span>Связь между сборками и пространством имен</h4> 358 + 359 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 360 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Как 361 +разные компоненты взаимодействуют во время выполнения</h3> 362 + 363 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 364 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 365 +5. Примитивные, ссылочные и значимые типы</h2> 366 + 367 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 368 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Примитивные 369 +типы в языках программирования</h3> 370 + 371 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 372 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 373 +</span></span>Проверяемые и непроверяемые операции для примитивных типов</h4> 374 + 375 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 376 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Ссылочные 377 +и значимые типы</h3> 378 + 379 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 380 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 381 +</span></span>Как CLR управляет размещением полей для типа </h4> 382 + 383 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 384 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Упаковка 385 +и распаковка значимых типов</h3> 386 + 387 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 388 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 389 +</span></span>Изменение полей в упакованных значимых типах посредством интерфейсов 390 +(и почему этого лучше не делать)</h4> 391 + 392 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 393 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 394 +</span></span>Равенство и тождество объектов</h4> 395 + 396 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 397 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Хеш-коды 398 +объектов</h3> 399 + 400 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 401 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Примитивный 402 +тип данных dynamic</h3> 403 + 404 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 405 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 406 +6. Основные сведения о членах и типах</h2> 407 + 408 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 409 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Члены 410 +типа</h3> 411 + 412 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 413 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Видимость 414 +типа</h3> 415 + 416 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 417 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 418 +</span></span>Дружественные сборки</h4> 419 + 420 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 421 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Доступ 422 +к членам типов</h3> 423 + 424 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 425 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Статические 426 +классы</h3> 427 + 428 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 429 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Частичные 430 +классы, структуры и интерфейсы</h3> 431 + 432 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 433 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Компоненты, 434 +полиморфизм и версии</h3> 435 + 436 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 437 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 438 +</span></span>Вызов виртуальных методов, свойств и событий в CLR</h4> 439 + 440 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 441 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 442 +</span></span>Разумное использование видимости типов и модификаторов доступа к членам</h4> 443 + 444 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 445 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 446 +</span></span>Работа с виртуальными методами при управлении версиями типов</h4> 447 + 448 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 449 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 450 +7. Константы и поля</h2> 451 + 452 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 453 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Константы</h3> 454 + 455 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 456 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Поля</h3> 457 + 458 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 459 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 460 +8. Методы</h2> 461 + 462 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 463 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Конструкторы 464 +экземпляров и классы (ссылочные типы)</h3> 465 + 466 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 467 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Конструкторы 468 +экземпляров и структуры (значимые типы)</h3> 469 + 470 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 471 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Конструкторы 472 +типов</h3> 473 + 474 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 475 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Методы 476 +перегруженных операторов</h3> 477 + 478 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 479 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 480 +</span></span>Операторы и взаимодействие языков программирования</h4> 481 + 482 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 483 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 484 +</span></span>Особое мнение автора о правилах Microsoft, связанных с именами методов 485 +операторов</h4> 486 + 487 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 488 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Методы 489 +операторов преобразования</h3> 490 + 491 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 492 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Методы 493 +расширения</h3> 494 + 495 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 496 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 497 +</span></span>Правила и рекомендации</h4> 498 + 499 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 500 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 501 +</span></span>Расширение разных типов методами расширения</h4> 502 + 503 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 504 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 505 +</span></span>Атрибут расширения</h4> 506 + 507 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 508 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Частичные 509 +методы</h3> 510 + 511 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 512 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 513 +</span></span>Правила и рекомендации</h4> 514 + 515 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 516 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 517 +9. Параметры</h2> 518 + 519 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 520 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Необязательные 521 +и именованные параметры</h3> 522 + 523 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 524 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 525 +</span></span>Правила использования параметров.</h4> 526 + 527 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 528 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 529 +</span></span>Атрибут DefaultParameterValue и необязательные атрибуты</h4> 530 + 531 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 532 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Неявно 533 +типизированные локальные переменные</h3> 534 + 535 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 536 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Передача 537 +параметров в метод по ссылке</h3> 538 + 539 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 540 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Передача 541 +переменного количества аргументов</h3> 542 + 543 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 544 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Типы 545 +параметров и возвращаемых значений</h3> 546 + 547 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 548 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Константность</h3> 549 + 550 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 551 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 552 +10. Свойства</h2> 553 + 554 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 555 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Свойства 556 +без параметров</h3> 557 + 558 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 559 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 560 +</span></span>Автоматически реализуемые свойства</h4> 561 + 562 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 563 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 564 +</span></span>Осторожный подход к определению свойств</h4> 565 + 566 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 567 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 568 +</span></span>Свойства и отладчик Visual Studio</h4> 569 + 570 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 571 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 572 +</span></span>Инициализаторы объектов и коллекций</h4> 573 + 574 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 575 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 576 +</span></span>Анонимные типы</h4> 577 + 578 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 579 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 580 +</span></span>Тип System.Tuple</h4> 581 + 582 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 583 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Свойства 584 +с параметрами</h3> 585 + 586 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 587 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 588 +</span></span>Выбор главного свойства с параметрами</h4> 589 + 590 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 591 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Производительность 592 +при вызове методов доступа</h3> 593 + 594 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 595 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Доступность 596 +методов доступа свойств</h3> 597 + 598 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 599 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Обобщенные 600 +методы доступа свойств</h3> 601 + 602 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 603 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 604 +11. События</h2> 605 + 606 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 607 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Разработка 608 +типа, поддерживающего событие</h3> 609 + 610 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 611 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Этап 612 +1. Определение типа для хранения всей дополнительной информации, передаваемой получателям 613 +уведомления о событии</h3> 614 + 615 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 616 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Этап 617 +2. Определение члена-события</h3> 618 + 619 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 620 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Этап 621 +3. Определение метода, ответственного за уведомление зарегистрированных объектов 622 +о событии</h3> 623 + 624 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 625 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Этап 626 +4. Определение метода, преобразующего входную информацию в желаемое событие</h3> 627 + 628 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 629 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Реализация 630 +событий компилятором</h3> 631 + 632 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 633 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Создание 634 +типа, отслеживающего событие</h3> 635 + 636 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 637 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Явное 638 +управление регистрацией событий</h3> 639 + 640 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 641 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 642 +12. Обобщения</h2> 643 + 644 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 645 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Обобщения 646 +в библиотеке FCL</h3> 647 + 648 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 649 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Инфраструктура 650 +обобщений</h3> 651 + 652 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 653 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 654 +</span></span>Открытые и закрытые типы</h4> 655 + 656 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 657 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 658 +</span></span>Обобщенные типы и наследование</h4> 659 + 660 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 661 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 662 +</span></span>Идентификация обобщенных типов</h4> 663 + 664 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 665 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 666 +</span></span>Разрастание кода</h4> 667 + 668 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 669 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Обобщенные 670 +интерфейсы</h3> 671 + 672 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 673 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Обобщенные 674 +делегаты</h3> 675 + 676 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 677 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 678 +</span></span>Контравариантные и ковариантные аргументы-типы в делегатах и интерфейсах</h4> 679 + 680 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 681 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Обобщенные 682 +методы</h3> 683 + 684 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 685 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 686 +</span></span>Обобщенные методы и выведение типов</h4> 687 + 688 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 689 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Обобщения 690 +и другие члены</h3> 691 + 692 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 693 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Верификация 694 +и ограничения</h3> 695 + 696 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 697 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 698 +</span></span>Основные ограничения</h4> 699 + 700 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 701 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 702 +</span></span>Дополнительные ограничения</h4> 703 + 704 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 705 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 706 +</span></span>Ограничения конструктора</h4> 707 + 708 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 709 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 710 +</span></span>Другие проблемы верификации</h4> 711 + 712 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 713 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 714 +13<span lang=EN-US>.</span><span lang=EN-US> </span>Интерфейсы</h2> 715 + 716 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 717 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Наследование 718 +в классах и интерфейсах</h3> 719 + 720 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 721 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Определение 722 +интерфейсов</h3> 723 + 724 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 725 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Наследование 726 +интерфейсов</h3> 727 + 728 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 729 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Подробнее 730 +о вызовах интерфейсных методов</h3> 731 + 732 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 733 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Явные 734 +и неявные реализации интерфейсных методов (что происходит за кулисами)</h3> 735 + 736 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 737 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Обобщенные 738 +интерфейсы</h3> 739 + 740 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 741 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Обобщения 742 +и ограничения интерфейса</h3> 743 + 744 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 745 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Реализация 746 +нескольких интерфейсов с одинаковыми сигнатурами и именами методов</h3> 747 + 748 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 749 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Совершенствование 750 +безопасности типов за счет явной реализации интерфейсных методов</h3> 751 + 752 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 753 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Опасности 754 +явной реализации интерфейсных методов</h3> 755 + 756 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 757 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Дилемма 758 +разработчика: базовый класс или интерфейс?</h3> 759 + 760 +<h1 style='margin-left:36.0pt;text-indent:-18.0pt'><span style='font-family: 761 +Symbol'>·<span style='font:7.0pt "Times New Roman"'> 762 +</span></span>Часть III. Основные типы данных</h1> 763 + 764 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 765 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 766 +14. Символы, строки и обработка текста</h2> 767 + 768 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 769 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Символы</h3> 770 + 771 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 772 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Тип 773 +System.String</h3> 774 + 775 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 776 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 777 +</span></span>Создание строк</h4> 778 + 779 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 780 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 781 +</span></span>Неизменяемые строки</h4> 782 + 783 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 784 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 785 +</span></span>Сравнение строк</h4> 786 + 787 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 788 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 789 +</span></span>Интернирование строк</h4> 790 + 791 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 792 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 793 +</span></span>Создание пулов строк</h4> 794 + 795 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 796 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 797 +</span></span>Работа с символами и текстовыми элементами в строке</h4> 798 + 799 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 800 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 801 +</span></span>Прочие операции со строками</h4> 802 + 803 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 804 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Эффективное 805 +создание строк</h3> 806 + 807 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 808 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 809 +</span></span>Создание объекта StringBuilder</h4> 810 + 811 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 812 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 813 +</span></span>Члены типа StringBuilder</h4> 814 + 815 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 816 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Получение 817 +строкового представления объекта</h3> 818 + 819 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 820 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 821 +</span></span>Форматы и региональные стандарты</h4> 822 + 823 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 824 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 825 +</span></span>Форматирование нескольких объектов в одну строку</h4> 826 + 827 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 828 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 829 +</span></span>Создание собственного средства форматирования</h4> 830 + 831 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 832 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Получение 833 +объекта посредством разбора строки</h3> 834 + 835 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 836 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Кодировки: 837 +преобразования между символами и байтами</h3> 838 + 839 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 840 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 841 +</span></span>Кодирование и декодирование потоков символов и байтов</h4> 842 + 843 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 844 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 845 +</span></span>Кодирование и декодирование строк в кодировке Base-64</h4> 846 + 847 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 848 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Защищенные 849 +строки</h3> 850 + 851 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 852 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 853 +15. Перечислимые типы и битовые флаги</h2> 854 + 855 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 856 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Перечислимые 857 +типы</h3> 858 + 859 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 860 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Битовые 861 +флаги</h3> 862 + 863 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 864 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Добавление 865 +методов к перечислимым типам</h3> 866 + 867 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 868 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 869 +16. Массивы</h2> 870 + 871 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 872 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Инициализация 873 +элементов массива</h3> 874 + 875 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 876 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Приведение 877 +типов в массивах</h3> 878 + 879 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 880 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Базовый 881 +класс System Array</h3> 882 + 883 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span lang=EN-US 884 +style='font-family:Wingdings'>§<span style='font:7.0pt "Times New Roman"'> 885 +</span></span>Реализация интерфейсов <span lang=EN-US>IEnumerable, ICollection </span>и 886 +<span lang=EN-US>IList</span></h3> 887 + 888 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 889 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Передача 890 +и возврат массивов</h3> 891 + 892 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 893 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Массивы 894 +с ненулевой нижней границей</h3> 895 + 896 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 897 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Внутренняя 898 +реализация массивов</h3> 899 + 900 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 901 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Небезопасный 902 +доступ к массивам и массивы фиксированного размера</h3> 903 + 904 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 905 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 906 +17. Делегаты</h2> 907 + 908 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 909 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Знакомство 910 +с делегатами</h3> 911 + 912 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 913 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Обратный 914 +вызов статических методов</h3> 915 + 916 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 917 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Обратный 918 +вызов экземплярных методов</h3> 919 + 920 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 921 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Тонкости 922 +использования делегатов</h3> 923 + 924 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 925 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Обратный 926 +вызов нескольких методов (цепочки делегатов)</h3> 927 + 928 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 929 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 930 +</span></span>Поддержка цепочек делегатов в C#</h4> 931 + 932 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 933 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 934 +</span></span>Дополнительные средства управления цепочками делегатов</h4> 935 + 936 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 937 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Обобщенные 938 +делегаты</h3> 939 + 940 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 941 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Упрощенный 942 +синтаксис работы с делегатами</h3> 943 + 944 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 945 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 946 +</span></span>Упрощение 1: не создаем объект делегата</h4> 947 + 948 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 949 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 950 +</span></span>Упрощение 2: не определяем метод обратного вызова</h4> 951 + 952 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 953 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 954 +</span></span>Упрощение 3: не создаем обертку для локальных переменных для передачи 955 +их методу обратного вызова</h4> 956 + 957 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 958 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Делегаты 959 +и отражение</h3> 960 + 961 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 962 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 963 +18. Настраиваемые атрибуты</h2> 964 + 965 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 966 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Сфера 967 +применения настраиваемых атрибутов</h3> 968 + 969 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 970 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Определение 971 +класса атрибутов</h3> 972 + 973 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 974 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Конструктор 975 +атрибута и типы данных полей и свойств</h3> 976 + 977 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 978 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Выявление 979 +настраиваемых атрибутов</h3> 980 + 981 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 982 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Сравнение 983 +экземпляров атрибута</h3> 984 + 985 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 986 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Выявление 987 +настраиваемых атрибутов без создания объектов, производных от Attribute</h3> 988 + 989 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 990 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Условные 991 +атрибуты</h3> 992 + 993 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 994 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 995 +19. Null-совместимые значимые типы</h2> 996 + 997 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 998 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Поддержка 999 +в C# null-совместимых значимых типов</h3> 1000 + 1001 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1002 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Оператор 1003 +объединения null-совместимых значений</h3> 1004 + 1005 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1006 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Поддержка 1007 +в CLR null-совместимых значимых типов</h3> 1008 + 1009 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1010 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1011 +</span></span>Упаковка null-совместимых значимых типов</h4> 1012 + 1013 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1014 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1015 +</span></span>Распаковка null-совместимых значимых типов</h4> 1016 + 1017 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1018 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1019 +</span></span>Вызов метода GetType через null-совместимый значимый тип</h4> 1020 + 1021 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1022 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1023 +</span></span>Вызов интерфейсных методов через null-совместимый значимый тип</h4> 1024 + 1025 +<h1 style='margin-left:36.0pt;text-indent:-18.0pt'><span style='font-family: 1026 +Symbol'>·<span style='font:7.0pt "Times New Roman"'> 1027 +</span></span>Часть IV. Ключевые механизмы</h1> 1028 + 1029 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 1030 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 1031 +20. Исключения и управление состоянием 496</h2> 1032 + 1033 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1034 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Определение 1035 +«исключения»</h3> 1036 + 1037 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1038 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Механика 1039 +обработки исключений</h3> 1040 + 1041 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1042 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1043 +</span></span>Блок try</h4> 1044 + 1045 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1046 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1047 +</span></span>Блок catch</h4> 1048 + 1049 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1050 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1051 +</span></span>Блок finally</h4> 1052 + 1053 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1054 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1055 +</span></span>CLS-совместимые и CLS-несовместимые исключения</h4> 1056 + 1057 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1058 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Класс 1059 +System<span lang=EN-US>.</span>Exception</h3> 1060 + 1061 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1062 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Классы 1063 +исключений, определенные в FCL</h3> 1064 + 1065 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1066 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Генерирование 1067 +исключений</h3> 1068 + 1069 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1070 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Создание 1071 +классов исключений</h3> 1072 + 1073 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1074 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Продуктивность 1075 +вместо надежности</h3> 1076 + 1077 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1078 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Приемы 1079 +работы с исключениями</h3> 1080 + 1081 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1082 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1083 +</span></span>Активно используйте блоки finally</h4> 1084 + 1085 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1086 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1087 +</span></span>Не надо перехватывать все исключения</h4> 1088 + 1089 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1090 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1091 +</span></span>Корректное восстановление после исключения</h4> 1092 + 1093 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1094 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Отмена 1095 +незавершенных операций при невосстановимых исключениях</h3> 1096 + 1097 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1098 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Сокрытие 1099 +деталей реализации для сохранения контракта</h3> 1100 + 1101 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1102 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Необработанные 1103 +исключения</h3> 1104 + 1105 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1106 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Отладка 1107 +исключений</h3> 1108 + 1109 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1110 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Скорость 1111 +обработки исключений</h3> 1112 + 1113 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1114 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Области 1115 +ограниченного выполнения</h3> 1116 + 1117 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1118 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Контракты 1119 +кода</h3> 1120 + 1121 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 1122 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 1123 +21. Автоматическое управление памятью (уборка мусора)</h2> 1124 + 1125 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1126 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Управляемая 1127 +куча</h3> 1128 + 1129 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1130 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1131 +</span></span>Выделение ресурсов из управляемой кучи</h4> 1132 + 1133 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1134 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1135 +</span></span>Алгоритм уборки мусора</h4> 1136 + 1137 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1138 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1139 +</span></span>Уборка мусора и отладка</h4> 1140 + 1141 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1142 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Поколения</h3> 1143 + 1144 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1145 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1146 +</span></span>Запуск уборки мусора</h4> 1147 + 1148 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1149 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1150 +</span></span>Большие объекты</h4> 1151 + 1152 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1153 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1154 +</span></span>Режимы уборки мусора</h4> 1155 + 1156 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1157 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1158 +</span></span>Программное управление уборщиком мусора</h4> 1159 + 1160 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1161 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1162 +</span></span>Мониторинг использования памяти приложением</h4> 1163 + 1164 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1165 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Освобождение 1166 +ресурсов при помощи механизма финализации</h3> 1167 + 1168 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1169 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1170 +</span></span>Типы, использующие системные ресурсы</h4> 1171 + 1172 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1173 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1174 +</span></span>Интересные аспекты зависимостей</h4> 1175 + 1176 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1177 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1178 +</span></span>Другие возможности уборщика мусора для работы с системными ресурсами</h4> 1179 + 1180 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1181 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1182 +</span></span>Внутренняя реализация финализации</h4> 1183 + 1184 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1185 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Мониторинг 1186 +и контроль времени жизни объектов</h3> 1187 + 1188 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 1189 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 1190 +22. Хостинг CLR и домены приложений</h2> 1191 + 1192 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1193 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Хостинг 1194 +CLR</h3> 1195 + 1196 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1197 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Домены 1198 +приложений</h3> 1199 + 1200 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1201 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1202 +</span></span>Доступ к объектам из других доменов</h4> 1203 + 1204 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1205 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Выгрузка 1206 +доменов</h3> 1207 + 1208 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1209 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Мониторинг 1210 +доменов</h3> 1211 + 1212 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1213 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Уведомление 1214 +о первом управляемом исключении домена</h3> 1215 + 1216 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1217 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Использование 1218 +хостами доменов приложений</h3> 1219 + 1220 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1221 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1222 +</span></span>Исполняемые приложения</h4> 1223 + 1224 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1225 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1226 +</span></span>Полнофункциональные интернет-приложения Silverlight</h4> 1227 + 1228 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1229 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1230 +</span></span>Microsoft ASPNET и веб-службы XML</h4> 1231 + 1232 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1233 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1234 +</span></span>Microsoft SQL Server</h4> 1235 + 1236 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1237 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1238 +</span></span>Будущее и мечты</h4> 1239 + 1240 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1241 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Нетривиальное 1242 +управление хостингом</h3> 1243 + 1244 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1245 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1246 +</span></span>Применение управляемого кода</h4> 1247 + 1248 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1249 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1250 +</span></span>Разработка надежных хост-приложений</h4> 1251 + 1252 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1253 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1254 +</span></span>Возвращение потока в хост</h4> 1255 + 1256 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 1257 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 1258 +23. Загрузка сборок и отражение</h2> 1259 + 1260 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1261 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Загрузка 1262 +сборок</h3> 1263 + 1264 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1265 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Использование 1266 +отражения для создания динамически расширяемых приложений</h3> 1267 + 1268 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1269 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Производительность 1270 +отражения</h3> 1271 + 1272 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1273 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1274 +</span></span>Нахождение типов, определенных в сборке</h4> 1275 + 1276 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1277 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1278 +</span></span>Объект Type</h4> 1279 + 1280 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1281 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1282 +</span></span>Создание иерархии типов, производных от Exception</h4> 1283 + 1284 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1285 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1286 +</span></span>Создание экземпляра типа</h4> 1287 + 1288 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1289 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Создание 1290 +приложений с поддержкой подключаемых компонентов</h3> 1291 + 1292 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1293 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1294 +</span></span>Нахождение членов типа путем отражения</h4> 1295 + 1296 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1297 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1298 +</span></span>Нахождение членов типа</h4> 1299 + 1300 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1301 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1302 +</span></span>Обращение к членам типов</h4> 1303 + 1304 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1305 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1306 +</span></span>Использование дескрипторов привязки для снижения потребления памяти 1307 +процессом</h4> 1308 + 1309 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 1310 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 1311 +24. Сериализация</h2> 1312 + 1313 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1314 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Практический 1315 +пример сериализации/десериализации</h3> 1316 + 1317 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1318 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Сериализуемые 1319 +типы</h3> 1320 + 1321 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1322 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Управление 1323 +сериализацией и десериализацией</h3> 1324 + 1325 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1326 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Сериализация 1327 +экземпляров типа</h3> 1328 + 1329 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1330 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Управление 1331 +сериализованными и десериализованными данными</h3> 1332 + 1333 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1334 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1335 +</span></span>Определение типа, реализующего интерфейс ISerializable, не реализуемый 1336 +базовым классом</h4> 1337 + 1338 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1339 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Контексты 1340 +потока ввода-вывода</h3> 1341 + 1342 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1343 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Сериализация 1344 +в другой тип и десериализация в другой объект</h3> 1345 + 1346 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1347 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Суррогаты 1348 +сериализации</h3> 1349 + 1350 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1351 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1352 +</span></span>Цепочка селекторов суррогатов</h4> 1353 + 1354 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1355 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Переопределение 1356 +сборки и/или типа при десериализации объекта</h3> 1357 + 1358 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 1359 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 1360 +25. Взаимодействие с компонентами WinRT</h2> 1361 + 1362 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1363 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Проекции 1364 +уровня CLR и правила системы типов компонентов WinRT</h3> 1365 + 1366 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1367 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1368 +</span></span>Основные концепции системы типов WinRT</h4> 1369 + 1370 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1371 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Проекции 1372 +уровня .NET Framework</h3> 1373 + 1374 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1375 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1376 +</span></span>Асинхронные вызовы WinRT API из кода NET</h4> 1377 + 1378 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1379 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1380 +</span></span>Взаимодействия между потоками WinRT и потоками NET</h4> 1381 + 1382 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1383 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1384 +</span></span>Передача блоков данных между CLR и WinRT</h4> 1385 + 1386 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1387 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Определение 1388 +компонентов WinRT в коде C#</h3> 1389 + 1390 +<h1 style='margin-left:36.0pt;text-indent:-18.0pt'><span style='font-family: 1391 +Symbol'>·<span style='font:7.0pt "Times New Roman"'> 1392 +</span></span>Часть V. Многопоточность</h1> 1393 + 1394 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 1395 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 1396 +26. Потоки исполнения</h2> 1397 + 1398 +<h4 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1399 +Wingdings;font-style:normal'>§<span style='font:7.0pt "Times New Roman"'> 1400 +</span></span>Для чего Windows поддерживает потоки?</h4> 1401 + 1402 +<h4 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1403 +Wingdings;font-style:normal'>§<span style='font:7.0pt "Times New Roman"'> 1404 +</span></span>Ресурсоемкость потоков</h4> 1405 + 1406 +<h4 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1407 +Wingdings;font-style:normal'>§<span style='font:7.0pt "Times New Roman"'> 1408 +</span></span>Так дальше не пойдет!</h4> 1409 + 1410 +<h4 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1411 +Wingdings;font-style:normal'>§<span style='font:7.0pt "Times New Roman"'> 1412 +</span></span>Тенденции развития процессоров</h4> 1413 + 1414 +<h4 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1415 +Wingdings;font-style:normal'>§<span style='font:7.0pt "Times New Roman"'> 1416 +</span></span>CLR- и Windows-потоки</h4> 1417 + 1418 +<h4 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1419 +Wingdings;font-style:normal'>§<span style='font:7.0pt "Times New Roman"'> 1420 +</span></span>Потоки для асинхронных вычислительных операций</h4> 1421 + 1422 +<h4 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1423 +Wingdings;font-style:normal'>§<span style='font:7.0pt "Times New Roman"'> 1424 +</span></span>Причины использования потоков</h4> 1425 + 1426 +<h4 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1427 +Wingdings;font-style:normal'>§<span style='font:7.0pt "Times New Roman"'> 1428 +</span></span>Планирование и приоритеты потоков</h4> 1429 + 1430 +<h4 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1431 +Wingdings;font-style:normal'>§<span style='font:7.0pt "Times New Roman"'> 1432 +</span></span>Фоновые и активные потоки</h4> 1433 + 1434 +<h4 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1435 +Wingdings;font-style:normal'>§<span style='font:7.0pt "Times New Roman"'> 1436 +</span></span>Что дальше?</h4> 1437 + 1438 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 1439 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 1440 +27. Асинхронные вычислительные операции</h2> 1441 + 1442 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1443 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Пул 1444 +потоков в CLR</h3> 1445 + 1446 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1447 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Простые 1448 +вычислительные операции</h3> 1449 + 1450 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1451 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Контексты 1452 +исполнения</h3> 1453 + 1454 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1455 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Скоординированная 1456 +отмена</h3> 1457 + 1458 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1459 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Задания</h3> 1460 + 1461 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1462 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1463 +</span></span>Завершение задания и получение результата</h4> 1464 + 1465 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1466 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1467 +</span></span>Отмена задания</h4> 1468 + 1469 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1470 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1471 +</span></span>Автоматический запуск задания по завершении предыдущего </h4> 1472 + 1473 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1474 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1475 +</span></span>Дочерние задания</h4> 1476 + 1477 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1478 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1479 +</span></span>Структура задания</h4> 1480 + 1481 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1482 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1483 +</span></span>Фабрики заданий</h4> 1484 + 1485 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1486 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1487 +</span></span>Планировщики заданий</h4> 1488 + 1489 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span lang=EN-US 1490 +style='font-family:Wingdings'>§<span style='font:7.0pt "Times New Roman"'> 1491 +</span></span>Методы <span lang=EN-US>For, ForEach </span>и <span lang=EN-US>Invoke 1492 +</span>класса <span lang=EN-US>Parallel</span></h3> 1493 + 1494 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1495 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Встроенный 1496 +язык параллельных запросов</h3> 1497 + 1498 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1499 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Периодические 1500 +вычислительные операции </h3> 1501 + 1502 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1503 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1504 +</span></span>Разновидности таймеров</h4> 1505 + 1506 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1507 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Как 1508 +пул управляет потоками</h3> 1509 + 1510 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1511 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1512 +</span></span>Ограничение количества потоков в пуле</h4> 1513 + 1514 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1515 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1516 +</span></span>Управление рабочими потоками</h4> 1517 + 1518 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 1519 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 1520 +28. Асинхронные операции ввода-вывода</h2> 1521 + 1522 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1523 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Операции 1524 +ввода-вывода в Windows</h3> 1525 + 1526 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1527 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Асинхронные 1528 +функции C#</h3> 1529 + 1530 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1531 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Преобразование 1532 +асинхронной функции в конечный автомат</h3> 1533 + 1534 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1535 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Расширяемость 1536 +асинхронных функций</h3> 1537 + 1538 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1539 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Асинхронные 1540 +функции и обработчики событий</h3> 1541 + 1542 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1543 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Асинхронные 1544 +функции в FCL</h3> 1545 + 1546 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1547 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Асинхронные 1548 +функции и исключения</h3> 1549 + 1550 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1551 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Другие 1552 +возможности асинхронных функций</h3> 1553 + 1554 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1555 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Потоковые 1556 +модели приложений</h3> 1557 + 1558 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1559 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Асинхронная 1560 +реализация сервера</h3> 1561 + 1562 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1563 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Отмена 1564 +операций ввода-вывода</h3> 1565 + 1566 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1567 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1568 +</span></span>Некоторые операции ввода-вывода должны выполняться синхронно</h4> 1569 + 1570 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1571 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1572 +</span></span>Проблемы FileStream</h4> 1573 + 1574 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1575 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Приоритеты 1576 +запросов ввода-вывода</h3> 1577 + 1578 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 1579 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 1580 +29. Примитивные конструкции синхронизации потоков</h2> 1581 + 1582 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1583 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Библиотеки 1584 +классов и безопасность потоков</h3> 1585 + 1586 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1587 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Примитивные 1588 +конструкции пользовательского режима </h3> 1589 + 1590 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1591 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>и режима 1592 +ядра</h3> 1593 + 1594 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1595 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Конструкции 1596 +пользовательского режима</h3> 1597 + 1598 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1599 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1600 +</span></span>Volatile-конструкции</h4> 1601 + 1602 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1603 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1604 +</span></span>Interlocked-конструкции</h4> 1605 + 1606 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1607 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1608 +</span></span>Реализация простой циклической блокировки</h4> 1609 + 1610 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1611 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1612 +</span></span>Универсальный Interlocked-паттерн</h4> 1613 + 1614 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1615 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Конструкции 1616 +режима ядра</h3> 1617 + 1618 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1619 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1620 +</span></span>События</h4> 1621 + 1622 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1623 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1624 +</span></span>Семафоры</h4> 1625 + 1626 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1627 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1628 +</span></span>Мьютексы</h4> 1629 + 1630 +<h2 style='margin-left:72.0pt;text-indent:-18.0pt'><span style='font-family: 1631 +"Courier New"'>o<span style='font:7.0pt "Times New Roman"'> </span></span>Глава 1632 +30. Гибридные конструкции синхронизации потоков</h2> 1633 + 1634 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1635 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Простая 1636 +гибридная блокировка</h3> 1637 + 1638 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1639 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Зацикливание, 1640 +владение потоком и рекурсия</h3> 1641 + 1642 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1643 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Гибридные 1644 +конструкции в FCL</h3> 1645 + 1646 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1647 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1648 +</span></span>Классы ManualResetEventSlim и SemaphoreSlim</h4> 1649 + 1650 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1651 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1652 +</span></span>Класс Monitor и блоки синхронизации</h4> 1653 + 1654 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1655 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1656 +</span></span>Класс ReaderWriterLockSlim</h4> 1657 + 1658 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span lang=EN-US 1659 +style='font-family:Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1660 +</span></span>Класс <span lang=EN-US>OneManyLock</span></h4> 1661 + 1662 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span lang=EN-US 1663 +style='font-family:Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1664 +</span></span>Класс <span lang=EN-US>CountdownEvent</span></h4> 1665 + 1666 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span lang=EN-US 1667 +style='font-family:Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1668 +</span></span>Класс <span lang=EN-US>Barrier</span></h4> 1669 + 1670 +<h4 style='margin-left:144.0pt;text-indent:-18.0pt'><span style='font-family: 1671 +Symbol;font-style:normal'>·<span style='font:7.0pt "Times New Roman"'> 1672 +</span></span>Выводы по гибридным конструкциям</h4> 1673 + 1674 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1675 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Блокировка 1676 +с двойной проверкой</h3> 1677 + 1678 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1679 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Паттерн 1680 +условной переменной</h3> 1681 + 1682 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1683 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Асинхронная 1684 +синхронизация</h3> 1685 + 1686 +<h3 style='margin-left:108.0pt;text-indent:-18.0pt'><span style='font-family: 1687 +Wingdings'>§<span style='font:7.0pt "Times New Roman"'> </span></span>Классы 1688 +коллекций для параллельного доступа</h3> 1689 + 1690 +</div> 1691 + 1692 +</body> 1693 + 1694 +</html> 1695 + 1696 +{{/html}} 1697 +