Исходный код вики CLR via C# | Джеффри Рихтер
Версия 3.1 от Alexandr Fokin на 2020/08/09 22:10
Последние авторы
author | version | line-number | content |
---|---|---|---|
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}} |