More Effective C#¤¤¤åª© | ¼g¥X¨}¦nC#µ{¦¡ªº50Ó¨ãÅé°µªk ²Ä¤Gª© ( ÁcÅé ¦r) |
§@ªÌ¡GBill Wagner | Ãþ§O¡G1. -> µ{¦¡³]p -> .NET -> C# |
ĶªÌ¡G |
¥Xª©ªÀ¡GùÖ®p¥Xª© | 3dWoo®Ñ¸¹¡G 49051 ¸ß°Ý®ÑÄy½Ð»¡¥X¦¹®Ñ¸¹¡I¡i¯Ê®Ñ¡j NT©w»ù¡G 450 ¤¸ §é¦©»ù¡G 338 ¤¸
|
¥Xª©¤é¡G5/11/2018 |
¶¼Æ¡G277 |
¥úºÐ¼Æ¡G0 |
|
¯¸ªø±ÀÂË¡G |
¦L¨ê¡G¶Â¥Õ¦L¨ê | »y¨t¡G ( ÁcÅé ª© ) |
|
¥[¤JÁʪ«¨® ¢x¥[¨ì§Úªº³Ì·R (½Ð¥ýµn¤J·|û) |
ISBN¡G9789864767892 |
§@ªÌ§Ç¡@|¡@ĶªÌ§Ç¡@|¡@«e¨¥¡@|¡@¤º®e²¤¶¡@|¡@¥Ø¿ý¡@|¡@§Ç |
(²Åé®Ñ¤W©Òz¤§¤U¸ü³sµ²¯Ó®É¶O¥\, ®¤¤£¾A¥Î¦b¥xÆW, YŪªÌ»Ýn½Ð¦Û¦æ¹Á¸Õ, ®¤¤£«OÃÒ) |
§@ªÌ§Ç¡G |
ĶªÌ§Ç¡G |
«e¨¥¡G |
¤º®e²¤¶¡G½u¤W¤U¸ü¤º®e ²[»\C# 7.0¦b¡mMore Effective C# ¤¤¤åª© ²Ä¤Gª©¡n¤¤¡A¥@¬Éª¾¦Wªº.NET±M®aBill Wagner«ü¥X¨Ã¸Ñ»¡50Ó¯S©w±j¤j»P®Ä¯à¨}¦nªºC# 7.0¤¤°ª¯Å§Þ¥©¡C°w¹ï¥i¯à¹J¨ìªº°ÝÃD¡A´£¥X±j¦Ó¦³¤Oªº·s¸Ñªk¡A¥H¦]À³¶V¨Ó¶V½ÆÂøªºC#»y¨¥»P¤éº¥Ãe¤jªº¶}µoªÀ¸s¡C¾ú¸g¤TÓª©¥»ªº¡mEffective C#¡n¡AWagner²M·¡ªº¸ÑÄÀ¡B±M·~ªº«Øij»P¹ê»Ú½d¨Òµ{¦¡½X¡A¤w³QÃÒ©ú¹ï¦¨¤d¤W¦Ê¦ì¶}µoªÌ¦Ó¨¥¬OµL»ùªº¡C¡mMore Effective C#¡A²Ä¤Gª©¡n¥H¸g¹LÅçÃÒªº¬Û¦P¤è¦¡¤¶²ÐC# 7.0·s¥\¯à¡A¨ó§U§A§ó¦³®Ä²v¦a°õ¦æ¼ô±x¤u§@¡C°ò©ó¨ô¶VªºC#¸gÅç¡A¥H¤Î¦b¥þ²yC#¼Ð·Ç©eû·|ªºÃöÁä©Ê¨¤¦â¡AWagner±j½Õ¥Hª«¥ó¾É¦V¡B¨ç¼Æ¦¡¤ÎªA°È¾É¦Vªº¤è¦¡¡A¥HC#³B²z¸ê®Æ¡B¥H§ó¦nªº¤è¦¡¦V¨Ï¥ÎªÌ»P¨ä¥Lµ{¦¡³]p®vªí¹F±zªº¥Î·N¡B¥H¤Î¹B¥Î±j¤jªº«D¦P¨B»P°ÊºAµ{¦¡³]p¡C ?¨Ï¥ÎÄݩʨú¥N¥i¦s¨úªº¸ê®Æ¦¨û(°µªk1)?°Ï¤À¹ê½è»P°Ñ¦Ò«¬§O(°µªk4)?¤F¸Ñ¦hºØ¬Ûµ¥·§©À¤§¶¡ªºÃö«Y(°µªk9)?¦b§AªºAPI¤¤ÁקKÂà´«¹Bºâ¤l(°µªk11)?¤F¸Ñ¤¶±»Pvirtual methods¤§¶¡®t²§(°µªk15)?ÁקK¦b°ò©³Ãþ§O¤¤©w¸q¤èªk¦h¸ü(°µªk19)?«Ø¥ß²M·¡ªº¡B³Ì¤Öªº¡B¥H¤Î§¹¾ãªº¤èªk¸s(°µªk22)?¦biterators ¤Îasync¤èªk¤¤¨Ï¥Î°Ï°ì¨ç¦¡±Ò°Ê¥ß§Y¿ù»~¦^³ø(°µªk26)?«D¦P¨B¤u§@¤¤¨Ï¥Îasync¤èªk(°µªk27)?ÁקK°õ¦æºü°t¸m»Pcontext switches(°µªk30)?«Øºc¦³¦Ò¼{¨Ò¥~±¡ªpªº¥¦æºtºâªk(°µªk36)?¨Ï¥Î°õ¦æºü°Ï¶°¨ú¥N«Ø¥ß°õ¦æºü(°µªk37)?¨Ï¥ÎBackgroundWorker°µ¸ó°õ¦æºü³q°T(°µªk38)?¤F¸Ñ°ÊºAµ{¦¡³]pªº§Q¹ú(°µªk43)?¤F¸Ñ¦p¦ó¹B¥Îexpression API(°µªk46)?¦b¤½¶}ªºAPIs¤¤´î¤Ö°ÊºAª«¥óªº¨Ï¥Î(°µªk47)§A¤w¸g¬O¤@¦ì¦¨¥\ªºC#µ{¦¡³]p®v¡A¥»®Ñ·|¨Ï§A§ó¬°¥X¦â¡C |
¥Ø¿ý¡G«e¨¥ ²Ä 1 ³¹¡@³B²z¸ê®Æ«¬§O §@ªk 01 ¨Ï¥ÎÄݩʨú¥N¥i¦s¨úªº¸ê®Æ¦¨û §@ªk 02 ¥iÅܰʪº¸ê®ÆÀu¥ý¨Ï¥ÎÁôÂÃÄÝ©Ê §@ªk 03 ¹êÈ«¬§OÀu¥ý¨Ï¨ä¨ã¤£¥iÅÜ©Ê §@ªk 04 °Ï¤À¹êÈ»P°Ñ¦Ò«¬§O §@ªk 05 ½T«O 0 ¬O¹êÈ«¬§Oªº¦³®Äª¬ºA §@ªk 06 ½T«OÄݩʹB§@¦p¸ê®Æ¤@¯ë §@ªk 07 ¨Ï¥Î Tuples ¨î«¬§Oªº½d³ò §@ªk 08 ¦b°Î¦W«¬§O¤W©w¸q°Ï°ì¨ç¦¡ §@ªk 09 ¤F¸Ñ¦hºØ¬Ûµ¥·§©À¤§¶¡ªºÃö«Y §@ªk 10 ¤F¸Ñ GetHashCode() ªº³´¨À
²Ä 2 ³¹¡@API ³]p §@ªk 11 ¦b§Aªº API ¤¤ÁקKÂà´«¹Bºâ¤l §@ªk 12 ¨Ï¥Î¿ï¾Ü©Ê¤Þ¼Æ´î¤Ö¤èªkªº¦h¸ü §@ªk 13 ¨î«¬§Oªº¥i¨£©Ê §@ªk 14 Àu¥ý©w¸q¨Ã¹ê§@¤¶±¶i¦æÄ~©Ó §@ªk 15 ¤F¸Ñ¤¶±»P Virtual Method ¤§¶¡®t²§ §@ªk 16 ¬°³qª¾¹ê§@¨Æ¥ó¼Ò¦¡ §@ªk 17 ÁקK¶Ç¦^¤º³¡Ãþ§Oª«¥óªº°Ñ¦Ò §@ªk 18 Àu¥ý¨Ï¥Î Override ´À¥N Event Handler §@ªk 19 ÁקK¦b°ò©³Ãþ§O¤¤©w¸q¤èªk¦h¸ü §@ªk 20 ¤F¸Ñ¨Æ¥ó¦p¦ó¼W¶iª«¥ó¤§¶¡°õ¦æ´Áªº½¢¦X §@ªk 21 ¥u«Å§i Nonvirtual Event §@ªk 22 «Ø¥ß²M·¡ªº¡B³Ì¤Öªº¡A¥H¤Î§¹¾ãªº¤èªk¸s §@ªk 23 ³¡¤ÀÃþ§Oªº«Øºc¨ç¦¡¡B§ó°Ê¤l»P Event handler ¨Ï¥Î³¡¤À¤èªk §@ªk 24 ÁקK¨Ï¥Î ICloneable¡A¦]¬°¥¦¨î§Aªº³]p¿ï¾Ü §@ªk 25 Array ¤Þ¼Æ¨î¥u¨Ï¥Î params °}¦C §@ªk 26 ¦b Iterators »P Async ¤èªk¤¤¨Ï¥Î°Ï°ì¨ç¦¡±Ò°Ê¥ß§Y¿ù»~¦^³ø
²Ä 3 ³¹¡@¥HTask ¬°°ò¦ªº«D¦P¨Bµ{¦¡³]p §@ªk 27 «D¦P¨B¤u§@¨Ï¥Î Async ¤èªk §@ªk 28 ¥Ã»·¤£n¼g async void ¤èªk §@ªk 29 ÁקKµ²¦X¦P¨B»P«D¦P¨B¤èªk §@ªk 30 ÁקK°õ¦æºü°t¸m¤Î Context Switches §@ªk 31 ÁקK«D¥²nªº«Ê°e³B²z¡]Marshalling¡^Context §@ªk 32 ¨Ï¥Î Task ª«¥ó¦X¦¨«D¦P¨B¤u§@ §@ªk 33 ¦Ò¼{¹ê§@ Task ¨ú®ø¨ó©w¡]Task Cancellation Protocol¡^ §@ªk 34 ½w½ÄÂX¥Rªº«D¦P¨B¦^¶ÇÈ
²Ä 4 ³¹¡@¥¦æ³B²z §@ªk 35 ¾Ç²ß PLINQ ¦p¦ó¹ê§@¥¦æºtºâªk §@ªk 36 «Øºc¦³¦Ò¼{¨Ò¥~±¡ªpªº¥¦æºtºâªk §@ªk 37 ¨Ï¥Î°õ¦æºü°Ï¶°¨ú¥N«Ø¥ß°õ¦æºü §@ªk 38 ¨Ï¥Î BackgroundWorker °µ¸ó°õ¦æºü³q°T §@ªk 39 ¤F¸Ñ XAML Àô¹Ò¤¤ªº¸ó°õ¦æºü©I¥s §@ªk 40 ¨Ï¥Î lock() §@¬°¦P¨B³B²zªºº¿ï §@ªk 41 Âê©w Handles ¨Ï¥Î³Ì¤p¥i¯àªº½d³ò §@ªk 42 ÁקK¦bÂê©wªº°Ï¬q©I¥s¤£©úªºµ{¦¡½X
²Ä 5 ³¹¡@°ÊºAµ{¦¡³]p §@ªk 43 ¤F¸Ñ°ÊºAµ{¦¡³]pªº§Q¹ú §@ªk 44 ³z¹L°ÊºA«¬§O¹B¥Îªx«¬¤Þ¼Æ°õ¦æ´Áªº«¬§O §@ªk 45 ¸ê®ÆÅX°Ê¡]Data-Driven¡^°ÊºA«¬§O¨Ï¥Î DynamicObject ©Î IDynamicMetaObjectProvider §@ªk 46 ¤F¸Ñ¦p¦ó¹B¥Î Expression API §@ªk 47 ¦b¤½¶}ªº API ¤¤´î¤Ö°ÊºAª«¥óªº¨Ï¥Î
²Ä 6 ³¹¡@°Ñ»P¥þ²yC# ªÀ¸s §@ªk 48 ´M¨D³Ì¦nªºµª®×¡A¦Ó¤£¬O³Ì¨üÅwªïªºµª®× §@ªk 49 °Ñ»P³W®æ¤Îµ{¦¡½Xªºq©w §@ªk 50 ¦Ò¼{¥Î¤ÀªR¾¹¦Û°Ê¤ÆºD¥Îªk |
§Ç¡G |