Effective C#¤¤¤åª© | ¼g¥X¨}¦nC#µ{¦¡ªº50Ó¨ãÅé°µªk ²Ä¤Tª© ( ÁcÅé ¦r) |
§@ªÌ¡GBill Wagner | Ãþ§O¡G1. -> µ{¦¡³]p -> .NET -> C# |
ĶªÌ¡G·¨´L¤@ |
¥Xª©ªÀ¡GùÖ®p¥Xª© | 3dWoo®Ñ¸¹¡G 46822 ¸ß°Ý®ÑÄy½Ð»¡¥X¦¹®Ñ¸¹¡I¡i¯Ê®Ñ¡j NT©w»ù¡G 450 ¤¸ §é¦©»ù¡G 338 ¤¸
|
¥Xª©¤é¡G5/24/2017 |
¶¼Æ¡G250 |
¥úºÐ¼Æ¡G0 |
|
¯¸ªø±ÀÂË¡G  |
¦L¨ê¡G¶Â¥Õ¦L¨ê | »y¨t¡G ( ÁcÅé ª© ) |
|
¥[¤JÁʪ«¨® ¢x¥[¨ì§Úªº³Ì·R (½Ð¥ýµn¤J·|û) |
ISBN¡G9789864763481 |
§@ªÌ§Ç¡@|¡@ĶªÌ§Ç¡@|¡@«e¨¥¡@|¡@¤º®e²¤¶¡@|¡@¥Ø¿ý¡@|¡@§Ç |
(²Åé®Ñ¤W©Òz¤§¤U¸ü³sµ²¯Ó®É¶O¥\, ®¤¤£¾A¥Î¦b¥xÆW, YŪªÌ»Ýn½Ð¦Û¦æ¹Á¸Õ, ®¤¤£«OÃÒ) |
§@ªÌ§Ç¡G |
ĶªÌ§Ç¡G |
«e¨¥¡G |
¤º®e²¤¶¡G²[»\ C# 6.0¦]À³¶V¨Ó¶V½ÆÂøªºC#»y¨¥»P¤éº¥Ãe¤jªº¶}µoªÀ¸s¡A§@ªÌÂk¯Ç¤F50ºØ¼¶¼g§ó¦nµ{¦¡ªº¤èªk¡A¨ó§UŪªÌ¼¶¼g¥X°í¹ê¡B°ª®Ä²v¡B°ª©Ê¯àC# 6.0µ{¦¡¡C¥»®Ñ·sª©©Ò´£¨Ñªº·s¤è®×¥]¬Aµ½¥Îªx«¬»PLINQ¡A¥H¤Î±Mªù¤@³¹°Q½×¨Ò¥~³B²zªº³Ì¨Î°µªk¡C²M·¡¡B°È¹ê¡B±M®a¯µ³Z»P¹ê¥Îªº½d¨Òµ{¦¡¡AÅý²³¦h¶}µoªÌ¹ïEffective C#·R¤£ÄÀ¤â¡C¾ÌÂǵÛÂ×´IªºC#¸gÅç¡A§@ªÌ´£¨Ñ¤FC#»y¨¥»P.NETÀô¹Ò¤¤¡A±q¸ê·½ºÞ²z¨ì¦h®Ö¤ä´©ªº¦UºØ°ÝÃD¸Ñ¨M¤è®×¡A¥H¤Î¦p¦óÁ׶}±`¨£ªº³´¨À¡CŪªÌ¥i¾Ç²ß¨ì¦b¦hºØ¿ï¶µ¤U¦p¦ó¿ï¾Ü³Ì¦³®Äªº¸Ñ¨M¤èªk¡A»P¦p¦ó¼¶¼g®e©öºûÅ@¤Î§ïµ½ªºµ{¦¡½X¡CWagner¸ÑÄÀ¤F¥H¤U±ø¥Øªºì¦]»P°µªk¡G?°¾¦nÁô§t«¬§Oªº°Ï°ìÅܼÆ(¨£¤èªk1)?¥H¤º´¡¦r¦ê¨ú¥Nstring.Format()(¨£¤èªk4)?¥Hdelegateªí¹Fcallback(¨£¤èªk7)?µ½¥Î.NETªº¸ê·½ºÞ²z(¨£¤èªk11)?©w¸q³Ì¤Ö¥B¨¬°÷ªºªx«¬¨î(¨£¤èªk18)?¨Ï¥Î°õ¦æ´Á«¬§OÀˬd¯S¤Æ³q¥Îºtºâªk(¨£¤èªk19)?¥Hdelegate©w¸q¤èªkªº«¬§O°Ñ¼Æ¨î(¨£¤èªk23)?¥HÂX¥R¤èªk³W½d³Ì¤p¬É±¦X¬ù(¨£¤èªk27)?«Øºcsequenceªº¥i²Õ¦XAPI(¨£¤èªk31)?action¡Bpredicate¡B¥H¤Î¨ç¦¡»P¡¥Nªº¸Ñ½¢(¨£¤èªk32)?°¾¦nlambdaªí¥Ü¦¡ªº¤èªk(¨£¤èªk38)?°Ï§O´£«e»P©µ«á°õ¦æ(¨£¤èªk40)?ÁקK§ì¨ú°ª¦¨¥»ªº¸ê·½(¨£¤èªk41)?¨Ï¥Î¨Ò¥~¦^³ø¤èªk¦X¬ù¥¢±Ñ(¨£¤èªk45)?§Q¥Î¨Ò¥~ºD¨Òªº°Æ§@¥Î(¨£¤èªk50)¦pªG§A¤w¸g¬O¦¨¥\ªºC#µ{¦¡³]p®v¡A¥»®Ñ±NÅý§A®Ê¨¬°³»¦y°ª¤â¡C |
¥Ø¿ý¡G«e¨¥
²Ä1³¹¡@C# »y¨¥ºD¥Î»yªk °µªk01 °¾¦nÁô§t«¬§Oªº°Ï°ìÅÜ¼Æ °µªk02 °¾¦n readonly ¦Ó«D const °µªk03 °¾¦n is ©Î as ¹Bºâ¤l¦Ó«D«¬§OÂà´« °µªk04 ¥H¤º´¡¦r¦ê¨ú¥N string.Format() °µªk05 ¹ï¤å¤Æ¯S©w¦r¦ê°¾¦n FormattableString °µªk06 ÁקK¦r¦ê«¬§O API °µªk07 ¥H delegate ªí¥Ü callback °µªk08 ¹ï¨Æ¥ó¥s¥Î¨Ï¥ÎªÅ±ø¥ó¹Bºâ¤l °µªk09 ´î¤Ö boxing »P unboxing °µªk10 ¥u¹ï°ò©³Ãþ§O§ó·s¨Ï¥Î new ×¹¢µü
²Ä2³¹¡@.NET ¸ê·½ºÞ²z °µªk11 »{ÃÑ .NET ¸ê·½ºÞ²z °µªk12 °¾¦n¦¨ûªì©l¤Æµ{§Ç¦Ó«D«ü¬£³¯z °µªk13 ¹ïÀRºAÃþ§O¦¨û¶i¦æ¾A·íªºªì©l¤Æ °µªk14 ´î¤Ö«½Æªºªì©l¤ÆÅÞ¿è °µªk15 ÁקK«Øºc¤£¥²nªºª«¥ó °µªk16 µ´¤£¦b«Øºc¤¸¤¤©I¥sµêÀÀ¨ç¦¡ °µªk17 ¹ê§@¼Ð·Çªº Dispose ¼Ò¦¡
²Ä3³¹¡@¨Ï¥Îªx«¬ °µªk18 ©w¸q³Ì¤Ö»P¨¬°÷ªº¬ù§ô °µªk19 ¨Ï¥Î°õ¦æ´Á«¬§OÀˬd¯S¤Æªx«¬ºtºâªk °µªk20 ¥H IComparable »P IComparer ¹ê§@±Æ§ÇÃö«Y °µªk21 «Øºc¤ä´© Disposable «¬§O°Ñ¼Æªºªx«¬Ãþ§O °µªk22 ¤ä´©ªx«¬ªº¦@ÅܼƻP¤ÏÅÜ¼Æ °µªk23 ¨Ï¥Î delegate ©w¸q«¬§O°Ñ¼Æªº¤èªk¬ù§ô °µªk24 ¤Å©ó°ò©³Ãþ§O©Î¬É±«Øºcªx«¬¯S¤Æ °µªk25 °¾¦nªx«¬¤èªk¡A°£«D«¬§O°Ñ¼Æ¬O¹ê¨ÒÄæ¦ì °µªk26 °£ªx«¬¬É±¥~ÁÙn¹ê§@¶Ç²Î¬É± °µªk27 ¥HÂX¥R¤èªk¥[¤J³Ì¤Öªº¬É±¦X¬ù °µªk28 ¥HÂX¥R¤èªk¥[±j«Øºc«¬§O
²Ä4³¹¡@¨Ï¥ÎLINQ °µªk29 °¾¦n¥H Iterator ¤èªk¦^¶Ç¶°¦X °µªk30 °¾¦n¬d¸ß»yªk¦Ó«D?°é °µªk31 ¬°§Ç¦C«Øºc¥i²Õ¦X API °µªk32 ±q°Ê§@¡Bzµü»P¨ç¦¡¤¤¸Ñ½¢¡¥N °µªk33 ³Q½Ð¨D®É²£¥Í§Ç¦C¶µ¥Ø °µªk34 ¨Ï¥Î¨ç¦¡°Ñ¼Æ¸Ñ½¢ °µªk35 ¤£n¹L¸üÂX¥R¤èªk °µªk36 »{ÃѬd¸ßªí¥Ü¦¡¦p¦ó¹ïÀ³¤èªk©I¥s °µªk37 ¦b¬d¸ß¤¤°¾¦n´k©Ê¨DȦӫD¿n·¥¨DÈ °µªk38 °¾¦n lambda ªí¥Ü¦¡¦Ó«D¤èªk °µªk39 ÁקK¦b¨ç¦¡»P°Ê§@¤¤©ß¥X¨Ò¥~ °µªk40 °Ï¤À´£«e»P©µ¿ð°õ¦æ °µªk41 ÁקK®·®»©ù¶Qªº¸ê·½ °µªk42 °Ï¤À IEnumerable »P IQueryable ¸ê®Æ¨Ó·½ °µªk43 ¨Ï¥Î Single() »P First() ¥H±j¨î¬d¸ßªº»y·Nµ²ªG °µªk44 ÁקKקï¬ÉÅܼÆ
²Ä5³¹ ¨Ò¥~ªº³Ì¨Î°µªk °µªk45 ¥H¨Ò¥~¦^³ø¤èªk¬ù©w¥¢±Ñ °µªk46 ¥H using »P try/final ²M²z¸ê·½ °µªk47 «Øºc§¹¾ãªºÀ³¥Îµ{¦¡±MÄݨҥ~Ãþ§O °µªk48 °¾¦n±j¨Ò¥~«OÃÒ °µªk49 °¾¦n¨Ò¥~¹LÂo¦Ó«D catch »P«·s©ß¥X °µªk50 §Q¥Î¨Ò¥~¹LÂoªº°Æ§@¥Î
¯Á¤Þ |
§Ç¡G |