Вы находитесь на странице: 1из 19

??????

???????????

#4.
0

The
Complete
Reference

C#
4.0
HERBERT SCHILDT

Learn more.

Do more.

MHP ROFESSIO NAL. COM

#4.0

2011

???32.973.26
018.2.75?57
???681.3.07

???????????????"???????"
???.?????????..
?????????????????????????????.?.
??????????????????????????????????????????"???????"????????:

info@williamspublishing.com,
http://www.williamspublishing.com
,???????.
32.973.26018.2.75
?57C#
4.0:?????????????????.:???.?????.?.:???"?.?.???????",2011.1056?.:??.?????.???.????.
ISBN 9785845916846(???.)

,,
,
McGrow-Hill Higher Ed.
Authorized translation from the English language edition published by McGraw-Hill Companies, Copyright 2010
All rights reserved. Except as permitted under the Copyright Act of 1976, no part of this publication may be reproduced
or distributed in any form or by any means, or stored in a database or retrieval system, without the prior written
permission of publisher, with the exception that the program listings may be entered, stored, and executed in a
computer system, but they may not be reproduced for publication.
Russian language edition published by Williams Publishing House according to the Agreement with R&I Enterprises
International, Copyright 2011

C# 4.0:
??????????????????????????? ....
??????????????????????????????? ..
.

????????????????17.09.2010.??????70x100/16.
?????????Times. ??????????????.
???.???.?.85,14.??.???.?.51,55.
?????1500???.??????24007.
??????????????????????CtP ????"????????????"??.?.?.
????????197110,??????????????,????????????.,15.
???"?.?.???????",127055,?.??????,??.??????,?.43,???.1
ISBN 9785845916846(???.)
ISBN 007174116?(????.)

???????????????"???????",2011
by The McGraw-Hill Companies, 2010

23

25

. #

29

1. C#

31

2. C#

41

3. ,

67

4.

97

5.

121

6. ,

147

7.

177

8.

209

9.

269

10.

303

11.

329

12. ,

375

13.

403

14. -

431

15. , -

473

16. ,

513

17. ,

537

18.

575

19. LINQ

637

20. , , 681
II. C#

717

21. System

719

22.

783

23. . :

833

24. . : TPL

885

25. ,

923

26.

1011

. 1039

1044


????????
?????????????????

22
22

23

25

??????????????
???????????????????????????
?????????????????????????????????
???,???????????????????
??????????????
??????????????

. #
1. C#
?????????????????????C#
???????????????????????????????????????????
?????????????C++
???????????????????Java
????????C#
????????C#
?????C# ????????.NET Framework
??????NET Framework
???????????????CLR
????????????????????????????
????????????????????????

2. C#
???????????????????????????????????????
????????????
???????????
????????????
??????????????????????
????????????????????????????????????csc.exe
????????????????????????????????????????Visual Studio
???????????????????????????????????????
?????????????????????????????
????????????????????????????????
??????????????????????
????????????????
???????????????????????
????????????????

27
27
27
27
28
28

29
31
32
32
33
33
34
36
37
37
38
38
39

41
41
42
43
44
44
45
46
50
53
54
54
57
58
58

?????????????
??????????????????????????
????????????????????????????????????????????????
?????????????C#
??????????????
??????????????????????.NET Framework

3. ,
????????????????????
?????????????C#
?????????????????
?????????????????????????????????????????
???????????????????
???????
???????????????????
??????????????????????????
????????
?????????????????????????
?????????????????????????????????????
?????????????????
????????????????????????????????????
???????????????????????
?????????????????????????
??????????????????????????????
????????????????????????????????????????????
??????????????????????????????
?????????????????????????????????
????????????????????????????
??????????????????????????????
??????????????????????????

4.
???????????????????????
??????????????????????????????
??????????????????????????????????????
??????????????????????????????
????????????????????
??????????????????????????????
????????????????????
?????????????????????,???,?????????????????
???????????????
?????????????????????????????????????????
?????????
???????????????????????????????????
?????????????????????????

60
61
63
64
65
66

67
67
68
69
71
73
74
75
76
79
80
80
81
83
83
84
85
86
89
90
91
93
95

97
97
98
101
104
106
107
107
108
114
117
117
119
119

5.
????????if
??????????????????if
???????????if-else-if '
????????switch
??????????????????switch
?????????????for
????????????????????????????????????for
?????????????while
?????????????do-while
?????????????foreach
???????????????????break ????????????????
???????????????????continue
????????return
????????goto

6. ,
?????????????????????????
???????????????????????????
?????????????????
????????????????
?????????????????????????????????????
??????
??????????????????????Building
???????????????
???????????????
???????????????????????
??????????????????????????????????????????Building
??????????????????????????
????????????
???????????????????????????????
????????????????????????????Building
?????????????????new
???????????????????new ?????????????????????
"????????????"???????????????????????
???????????
?????????????this

7.

???????
?????????????????
??????????????????
????????????????
??????????????????????????
????????????????????????????????
??????????????????

121
121
122
124
125
129
129
131
137
138
139
139
142
143
143

147
147
148
149
153
154
155
156
158
159
162
164
166
166
168
169
170
170
171
172
174

177

177
178
182
182
183
184
185

???????????????????????????
??????????????????Length
??????????????????Length ???????????????????????????????????
???????????????????????????
?????????????foreach
??????
???????????????
???????????????????
????????????
????????????????
??????????????????????????switch

187
189
191
192
194
198
198
199
203
205
206

8.
???????????????????????????????
???????????????????
?????????????????????????????????????
???????????????????????????????????????????????
???????????????????????????????
???????????????????????????????
????????????????????????????????????ref ?out
??????????????????????????????????ref
??????????????????????????????????out
??????????????????????????ref ?out ??????????????????
???????????????????????????????????????
????????????????????????
??????????????????????
?????????????????
???????????????????????
?????????????????????????????????????????????????????this 245??????????????????????
???????????????????????
?????????????????????????????????????????
???????????????????????????????????????
???????????????????????????????????????????????????????251????????????????????
?????Main()
???????????????????????MainQ
????????????????????????Main()
????????
????????????????????????static
???????????????????????
?????????????????

9.
??????????????????????????
????????????????????????????
???????????????????????????
????????????????????????????????C# ????????????

209
209
210
212
212
218
220
222
223
224
227
229
231
234
235
241

246
247
249
250
252
254
254
255
257
260
265
266

269
270
270
273
277

?????????????????????????????
????????????????????true ?false
??????????????????????????????
???????????????????????????????????????????
???????????????????????????????????????????????????????????????
???????????????????????
??????????????????????????????????????????????
?????????????????????????????????

281
283
286
286
288
292
297
298

10.

303

???????????
??????????????????????????????
??????????????????????
?????????????????????????????
??????????????????????
????????
????????????????????????????????
???????????????????????????????????????????
???????????,?????????????????
?????????????????????????????????????????
??????????????????????????????

303
304
307
310
311
313
318
319
320
320
324

.
??????????????????
????????????????????????????????
?????????????????????????????
?????????????????????????
????????????????????????????????
?????????????????????????
????????????????????????base ????????????????????????344?????????????????????????????????????
??????????????????????????
??????????????????????????????????????????????
???????????????????????????????????
?????????????????????????????
????????????????????????????
????????????????????????????
????????????????????????????????????????????????sealed
?????object
???????????????????
?????object ?????????????????????????

12. ,
??????????
?????????????????????
????????????????????????????
????????????????????
???????????????????????

329
329
333
336
337
339
343
346
349
351
355
359
360
363
367
368
370
372

375
375
377
381
383
385

???????????????????????
??????????????????????????????????????
???????????????
????????????????????????????????????????
?????????????????????????????.NET Framework
?????????
???????????????????
????????????
?????????????????????????
????????????????????????????????
??????????????????????

387
388
388
391
391
391
395
397
399
399
399

13.

403

?????System.Exception
?????????????????????????????????????
??????????????????????????try ?catch
????????????????????????????????????????????
???????????????????????????????????????????
????????????????????????????????
???????????????????????????????"???????"?????????????????????????????????
??????????????????????????????catch
??????????????????????
??????????????try
??????????????????????????????
????????????????????????????????
??????????????????finally
???????????????????????????Exception
???????????????????????????????????
?????????????????????????????????????
????????????????????????????????????
??????????????????????checked ?unchecked

14. -
??????????????????????????????C# ?????????
?????????????????????????
????????????????
?????????????
?????Stream
?????????????????????
???????????????????????????????
??????????????
???????????????????
?????????????????????????????????
????????????????ReadKey()
?????????????????????????????????
?????FileStream ???????????????????????

404
404
404
405
407
408
410
411
412
413
414
415
416
418
420
422
426
428

431
431
432
432
432
432
434
434
436
436
436
438
440
441

??????????????????????
????????????????????????????????????????
???????????
???????????????????FileStream ???????????????????
????????????????????????
????????????????Stream Writer
????????????????StreamReader
???????????????????????????????
???????????????????????????
?????Binary Writer
?????BinaryReader
????????????????????????????????????
??????????????????????????
????????????????MemoryStream
?????????????????StringReader ?StringWriter
?????File
???????????????????????????????????()
?????????????????Exists() ?GetLastAccessTime()
?????????????????????????????????????????????????????

15. , -

441
444
446
448
449
449
451
452
454
454
455
457
461
463
465
467
467
468
469

473

????????
473
(
??????????????????????????????????????????
476
?????????????????????????????????????????????
'
477
??????????????????
478
?????????????????????????????????
481
?????System.Delegate
483
???????????????????
483
????????????????
483
???????????????
484
??????????????????????????????????
484
?????????????????????????????????
485
????????????????????????????????????????????
486
???????????????
488
??????????????
488
????????????????????????
489
??????????????????????
492
???????
494
???????????????????????????????
496
????????????????????????????????????????????????????????????????????????????
497
???????????????????????????
500
???????????????????????????????
504
??????????????????????????????????????????????????????????
504
????????????????????????????????????.NET Framework
506
???????????????????EventHandler<TEventArgs> ?EventHandler 508?????????????????????????????????? 509

16. ,
????????????????
??????????????????????????
???????????????????????????????????????????????????516?????????using
????????????????????using
?????????????????????????????????
?????????????????????????
??????????????????????????
?????????????????????????????????????????????::
????????????
?????????#define
?????????#if ?#endif
?????????#else ?#elif
?????????#undef
?????????#?????
?????????#waming
?????????#???
?????????#region ?#endregion
?????????#pragma '
?????????????????????????internal
??????????????????internal

17. ,
??????????????????????????????
?????????????????????????????is
???????????????????as
???????????????????typeof
?????????
?????System.Type ???????????????????????
???????????????????
?????????????????????????
?????????????????????????????
?????????????????????????????????????
????????????????????????????
???????????????????????????????????????????
????????
?????????????????????????
??????????????????????????????????????????
??????????????????
???????AttributeUsage
???????Conditional
Obsolete

18.
?????????????????
??????????????????????
?????????????????????????????????????????

513
513
514
518
520
521
523
524
524
528
529
529
531
533
533
534
534
534
534
535
536

537
537
538
539
540
541
541
543
544
548
550
555
560
562
563
566
570
570
571
572

575
576
576
580

?????????????????????????????????????????????
????????????????????????????????????
???????????????????????????
????????????????
???????????????????????????????????
????????????????????????????????
?????????????????????new() ?????????????
??????????????????????????????????????
?????????????????????????????????????????????????????????????
???????????????????????????????
?????????????????,??????????????????????????????????????604???????????????????
?????????????????????????
????????????????????????????????????????????????????609???????????????????????????????????????
??????????????????
????????????????????
?????????????????????????????????
?????????????????????????
???????????????????????????????????
??????????????????????????
??????????????????????????????????????????????????
????????????????????????????????????????????
????????????????????????????????????????????
???????????????
?????????????????????????????????????????????
?????????????????????????????????????????????????
??????????????????
??????????????????????????????????????????
????????????????????,????????*??????????
??????????????????????????????????????????????

580
583
585
585
586
594
598
599
602
603
606
607
610
610
612
615
620
620
622
623
625
626
626
630
633
635
636
636

19. LINQ
??????LINQ
?????????????
???????????????????????????????
??????????????????????????????
?????????????????
???????????????????????????????????????????where
?????????????????????????????????????????????orderby
??????????????????????????????select
?????????????????????????????from
?????????????????????????????????????????group
???????????????????????????????????into
???????????????????let ??????????????????????????????????????
???????????????????????????????????????????????????join 660?????????????

637
638
639
641
642
643
644
646
649
653
655
657
659
663

?????????????????????????????
?????????????
?????????????????????
??????????????????????????????????????????
???????????????????????????????
??????????????????????????????,???????????????????
????????????????????????:??????????????????????
????????????????
????????????????
PLINQ

666
669
669
670
673
673
675
676
678
680

20. , , 681
???????????????
??????????????????????????
????????????????????????unsafe
??????????????????????fixed
???????????????????????????????????????
????????????????????????????????????
???????????????????
?????????????????
????????????????
???????????????????????????????
?????????????????
????????????????????????????????????
??????????????
???????????????????????????????
???????????????????????????????????????
??????????
?????????????????,??????????????????????????????????????699?????????????
???????????????
?????????????????????????????????
????????????????????????????????????
???????????????????
???????????????????
????????????lock
?????????????readonly
?????????????const ?volatile
????????using
?????????????extern

II. C#
21. System
?????????????????????System
?????Math

681
682
684
685
686
686
688
688
690
691
692
693
695
695
697
698
700

701
703
707
708
708
708
709
710
711
712

717
719
720
721

?????????.NET, ??????????????????????????????????????
?????????????????????????????????
????????????????????????????????????
?????????Decimal
?????????Char
?????????Boolean
?????Array
?????????????????????????
???????????????????????????
??????????????????
???????????????????
??????????????????Action
?????BitConverter
???????????????????????????????????????????Random
???????????????????????GC
?????object
?????Tuple
??????????IComparable ?IComparable<T>
?????????IEquatable<T>
?????????IConvertible
?????????ICloneable
??????????IFormatProvider ?IFormattable
??????????IObservable<T> ?IObserver<T>

22.
???????C#
?????String
??????????????????String
????,?????????????????????????String
???????????????String
???????????????????????
???????,????????????????????
?????????????
????????????????Substring()
??????????????????????String
??????????????
?????????????????????????????????
??????????????????????????????????
???????????????????????????????
?????????????????String.Format() ?ToString()
???????????????????????
????????????????String.Format() ?????????????????????????816????????????????ToStringQ ???????????????????????
?????????????????????????????????????????????????
???????????????????????????????????????????????????
??????????????????????????

727
728
730
735
741
748
750
763
766
767
768
769
771
773
774
776
777
778
778
779
779
781
781

783
783
784
784
785
786
808
810
811
811
812
812
812
814
815
816
819
820
820
824

???????????????????????????????????????????????
????????????????????????????????
??????????????????????????

23. . :
????????????????????????????
?????Thread
?????????????????????
??????????????????????????????????????????????????????838?????????????????????????
?????????????????????????????????
???????????????????????
????????IsBackground
?????????????????
?????????????
?????????????????????????????????
?????Monitor ???????????
?????????????????????????????????????Wait(),
Pulse() ?PulseAll()
??????????????????????????Wait() ?Pulse()
???????????????????????????????
??????????????????MethodlmplAttribute
???????????????????????????
???????
???????
?????????????????
?????Interlocked
???????????????????,?????????????????.NET Framework 4.0
????????????????
?????????????????Abort()
????????????????????Abort()
????????????????????????????????
??????????????????????????
?????????????????????????
????????????????????????????????????????????,
?????????????????.NET Framework 4.0
????????????????????????????????????????????
?????????????????????

24. . : TPL
????????????????????????????????????????
?????Task
??????????????
??????????????????????????????
?????????????????????????
???????????Dispose()
????????????????TaskFactory ????????????????

827
829
830

833

834
835
836
839
841
844
846
847
849
853
855
855
856
860
860
862
863
867
870
873
874
875
876
878
880
880
880
882
882
882

885
886
887
887
890
891
895
895

????????????????????????????????????????
?????????????????????????
???????????????????????
????????????????????????????????AggregateException
??????????????????????????????
?????Parallel
?????????????????????????????Invoke()
????????????????For()
????????????????ForEach()
????????????????????????PLINQ
?????ParallelEnumerable
???????????????????????????????AsParallel()
????????????????AsOrdered()
??????????????????????????
??????????????PLINQ
????????????????????PLINQ

25. ,

896
897
899
901
905
906
906
909
915
917
917
918
919
920
922
922

923

.?????????????????????
924
?????????????????????
925
???????????????????????????????
926
?????????DictionaryEntry
931
???????????????????????????
931
??????????????????????????????????????BitArray
950
????????????????????
953
???????????????????
954
?????????????????????????????
954
?????????KeyValuePair<TKey, TValue>
960
?????????????????????????
960
?????????????????????
983
??????????????????,????????????????????????????????,??????????988????????????????????IComparable
990
????????????????????IComparable ????????????????????????990????????????????????IComparable ??????????????????????
992????????????????????IComparer
994
?????????????????????????????????IComparer
994
???????????????????????????????IComparer<T>
996
????????????????StringComparer
997
?????????????????????????????????????
998
???????????????????????????????
999
???????????????????????????IDictionaryEnumerator
1000
?????????????????????IEnumerable ?IEnumerator
1001
????????????????????
1003
???????????????????
1005
??????????????????????????????yield
1006
?????????????????????????????
1006
????????????????????????????
1008

???????????????????????

1009

26.
?????????????????????System.Net
???????????????????????????????????
??????????????????????????????????
?????WebRequest
?????WebResponse
??????HttpWebRequest ?HttpWebResponse
???????????????????
??????????????????????
??????????,???????????????????Create()
??????????,???????????????????GetResponse()
??????????,???????????????????GetResponseStream()
???????????????????
?????Uri
???????????????????????????????,???????????????????????????HTTP
????????????????
???????cookie???????
??????????????????LastModified
???????????????????????????????????MiniCrawler
????????????????WebClient

.

???????????XML????????????
?????????????????????????????????????????
?????????????????????????????????????XML

1011
1012
1013
1014
1015
1017
1018
1018
1021
1021
1022
1022
1022
1024
1025
1026
1027
1029
1030
1034

1039
1039
1041
1041