»ó¼¼Á¤º¸
Ã¥¼Ò°³
´õ ³ªÀº Äڵ带 ÀÛ¼ºÇÏ´Â »õ·Î¿î Áöħ 50°¡Áö(C# 7.0 ´ëÀÀ) C#Àº ÀüÅëÀûÀÎ .NET ±â¹Ý °³¹ß¿¡¼ À¯´ÏƼ °ÔÀÓ ¿£ÁøÀ¸·Î °³¹ß ¿µ¿ªÀ» È®´ëÇÏ¸é¼ ´õ¿í ÁÖ¸ñ¹Þ°í ÀÖ´Ù. ¶ÇÇÑ ÀÚ¸¶¸°À¸·Î ´Ù¾çÇÑ ¸ð¹ÙÀÏ Ç÷§Æû¿¡ ´ëÀÀÇÒ ¼ö ÀÖ¾î ¼ö¿ä°¡ °è¼Ó ´Ã°í ÀÖ´Ù. ÀÌ Ã¥Àº ¼ÒÇÁÆ®¿þ¾î °³¹ßÀÚ°¡ C#À» ´õ È¿À²ÀûÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Â ´Ù¾çÇÑ ÆÁ°ú ½Ç¿ëÀûÀÎ ¹æ¹ýÀ» Á¦°øÇÑ´Ù. ƯÈ÷ ÀüÀÛÀÎ ¡ºÀÌÆåƼºê C#¡»¿¡¼ ¹Ìó ´Ù·çÁö ¸øÇß´ø 50°³ Ãß°¡ °³¹ß ÁöħÀ» ¼±Á¤ÇØ ÀÚ¼¼È÷ ´Ù·é´Ù.ÀúÀÚ´Â ÀÚ½ÅÀÇ ³ëÇÏ¿ì¿Í ÇÔ²² °³¹ß Ä¿¹Â´ÏƼ¿¡¼ Á¦¾ÈÇÑ °³¹ß Áöħ±îÁö °í·ÁÇØ ¸ÅÀÏ ¹ß»ýÇÒ ¼ö ÀÖ´Â ¹®Á¦¸¦ ÇØ°áÇÒ °·ÂÇÑ »õ ¼Ö·ç¼ÇÀ» Á¦°øÇÑ´Ù. Àü¹®°¡ÀÇ ÆÁ°ú ½Ç¿ë ¿¹Á¦ Äڵ带 ¸íÈ®ÇÏ°Ô ¼³¸íÇÑ ÀÌ Ã¥À» ÀÐ°í ³ª¸é, ÀÌ¹Ì Àͼ÷ÇÑ ÀÛ¾÷µµ ´õ È¿À²ÀûÀÌ°í È¿°úÀûÀ¸·Î ¼öÇàÇÒ ¼ö ÀÖ°Ô µÉ °ÍÀÌ´Ù.
ÀúÀÚ¼Ò°³
Àϸ®³ëÀÌ ´ëÇп¡¼ ÄÄÇ»ÅÍ °úÇÐÀ» Àü°øÇß°í ÇöÀç ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®ÀÇ .NET Core ÄÜÅÙÃ÷ÆÀ¿¡¼ C#°ú .NET °ü·Ã ±³À° ÀڷḦ ÀÛ¼ºÇÏ´Â ¾÷¹«¸¦ ´ã´çÇÑ´Ù. ¼¼°è ÃÖ°íÀÇ C# Àü¹®°¡ Áß ÇѸíÀ̸ç ECMA C# Ç¥ÁØ À§¿øȸÀÇ ¸â¹öÀ̱⵵ ÇÏ´Ù. È޸ŴÏÅ׸®¾ð Åø¹Ú½º(Humanitarian Toolbox) ´ëÇ¥ÀÌÀÚ ¸¶ÀÌÅ©·Î¼ÒÇÁÆ® Áö¿ª µð·ºÅÍÀÎ µ¿½Ã¿¡ 11³â°£ .NET ºÐ¾ß MVPÀ̱⵵ ÇÏ´Ù. ÃÖ±Ù¿¡´Â .NET Foundation ÀÚ¹® À§¿øÀ¸·Î À§Ã˵Ǿú´Ù. ½ºÅ¸Æ®¾÷ºÎÅÍ ´ë±â¾÷¿¡ À̸£±â±îÁö ´Ù¾çÇÑ ±â¾÷ÀÇ °³¹ß ÇÁ·Î¼¼½º¸¦ °³¼±ÇÏ°í °³¹ßÆÀÀ» ¼ºÀå½ÃÅ°´Â ÀÏÀ» µ½´Â´Ù. ¾Õ¼ ¡ºÀÌÆåƼºê C#¡»À» Ãâ°£ÇÑ ¹Ù ÀÖ´Ù.
¸ñÂ÷
CHAPTER 1_ µ¥ÀÌÅÍ Å¸ÀÔ
¾ÆÀÌÅÛ 1_ Á¢±Ù °¡´ÉÇÑ µ¥ÀÌÅÍ ¸â¹ö ´ë½Å ¼Ó¼ºÀ» »ç¿ëÇ϶ó
¾ÆÀÌÅÛ 2_ º¯°æ °¡´ÉÇÑ µ¥ÀÌÅÍ¿¡´Â ¾Ï¹¬Àû ¼Ó¼ºÀ» »ç¿ëÇÏ´Â °ÍÀÌ ³´´Ù
¾ÆÀÌÅÛ 3_ °ª ŸÀÔÀº º¯°æ ºÒ°¡´ÉÇÑ °ÍÀÌ ³´´Ù
¾ÆÀÌÅÛ 4_ °ª ŸÀÔ°ú ÂüÁ¶ ŸÀÔÀ» ±¸ºÐÇ϶ó
¾ÆÀÌÅÛ 5_ °ª ŸÀÔ¿¡¼´Â 0ÀÌ À¯È¿ÇÑ »óÅ°¡ µÇµµ·Ï ¼³°èÇ϶ó
¾ÆÀÌÅÛ 6_ ¼Ó¼ºÀ» µ¥ÀÌÅÍó·³ µ¿ÀÛÇÏ°Ô ¸¸µé¶ó
¾ÆÀÌÅÛ 7_ Æ©ÇÃÀ» »ç¿ëÇؼ ŸÀÔÀÇ »ç¿ë ¹üÀ§¸¦ Á¦ÇÑÇ϶ó
¾ÆÀÌÅÛ 8_ À͸í ŸÀÔÀº ÇÔ¼ö¸¦ ¹þ¾î³ªÁö ¾Ê°Ô »ç¿ëÇ϶ó
¾ÆÀÌÅÛ 9_ ´Ù¾çÇÑ µ¿Àϼº °³³äµé »çÀÌÀÇ »ó°ü°ü°è¸¦ ÀÌÇØÇ϶ó
¾ÆÀÌÅÛ 10_ GetHashCode()ÀÇ À§Ç輺À» ÀÌÇØÇ϶ó
CHAPTER 2_ API ¼³°è
¾ÆÀÌÅÛ 11_ API¿¡´Â º¯È¯ ¿¬»êÀÚ¸¦ ÀÛ¼ºÇÏÁö ¸»¶ó
¾ÆÀÌÅÛ 12_ ¼±ÅÃÀû ¸Å°³º¯¼ö¸¦ »ç¿ëÇÏ¿© ¸Þ¼µå ¿À¹ö·Îµå¸¦ ÃÖ¼ÒÈÇ϶ó
¾ÆÀÌÅÛ 13_ ŸÀÔÀÇ °¡½Ã¼ºÀ» Á¦ÇÑÇ϶ó
¾ÆÀÌÅÛ 14_ »ó¼Óº¸´Ù´Â ÀÎÅÍÆäÀ̽º¸¦ Á¤ÀÇÇÏ°í ±¸ÇöÇÏ´Â °ÍÀÌ ³´´Ù
¾ÆÀÌÅÛ 15_ ÀÎÅÍÆäÀ̽º ¸Þ¼µå¿Í °¡»ó ¸Þ¼µåÀÇ Â÷À̸¦ ÀÌÇØÇ϶ó
¾ÆÀÌÅÛ 16_ »óÅ Àü´ÞÀ» À§ÇÑ À̺¥Æ® ÆÐÅÏÀ» ±¸ÇöÇ϶ó
¾ÆÀÌÅÛ 17_ ³»ºÎ °´Ã¼¸¦ ÂüÁ¶·Î ¹ÝȯÇؼ´Â ¾È µÈ´Ù
¾ÆÀÌÅÛ 18_ À̺¥Æ® Çڵ鷯º¸´Ù´Â ¿À¹ö¶óÀ̵ùÀ» »ç¿ëÇ϶ó
¾ÆÀÌÅÛ 19_ º£À̽º Ŭ·¡½º¿¡ Á¤ÀÇµÈ ¸Þ¼µå¸¦ ¿À¹ö·ÎµåÇؼ´Â ¾È µÈ´Ù
¾ÆÀÌÅÛ 20_ À̺¥Æ®°¡ ·±Å¸ÀÓ ½Ã °´Ã¼ °£ÀÇ °áÇÕµµ¸¦ Áõ°¡½ÃŲ´Ù´Â °ÍÀ» ÀÌÇØÇ϶ó
¾ÆÀÌÅÛ 21_ À̺¥Æ®´Â °¡»óÀ¸·Î ¼±¾ðÇÏÁö ¸»¶ó
¾ÆÀÌÅÛ 22_ ¸íÈ®ÇÏ°í °£°áÇÏ¸ç ¿Ï°áµÈ ¸Þ¼µå ±×·ìÀ» »ý¼ºÇ϶ó
¾ÆÀÌÅÛ 23_ »ý¼ºÀÚ, º¯°æÀÚ, À̺¥Æ® Çڵ鷯¸¦ À§ÇØ partial Ŭ·¡½º¿Í ¸Þ¼µå¸¦ Á¦°øÇ϶ó
¾ÆÀÌÅÛ 24_ ¼³°è ¼±ÅÃÁö¸¦ Á¦ÇÑÇÏ´Â ICloneableÀº »ç¿ëÀ» ÇÇÇ϶ó
¾ÆÀÌÅÛ 25_ ¹è¿ ¸Å°³º¯¼ö¿¡´Â params ¹è¿¸¸ »ç¿ëÇØ¾ß ÇÑ´Ù
¾ÆÀÌÅÛ 26_ Áö¿ª ÇÔ¼ö¸¦ »ç¿ëÇؼ ¹Ýº¹ÀÚ¿Í ºñµ¿±â ¸Þ¼µåÀÇ ¿À·ù¸¦ Áï½Ã º¸°íÇ϶ó
CHAPTER 3 ŽºÅ© ±â¹Ý ºñµ¿±â ÇÁ·Î±×·¡¹Ö
¾ÆÀÌÅÛ 27_ ºñµ¿±â ÀÛ¾÷¿¡´Â ºñµ¿±â ¸Þ¼µå¸¦ »ç¿ëÇ϶ó
¾ÆÀÌÅÛ 28_ async void ¸Þ¼µå´Â Àý´ë ÀÛ¼ºÇÏÁö ¸»¶ó
¾ÆÀÌÅÛ 29_ µ¿±â, ºñµ¿±â ¸Þ¼µå¸¦ ÇÔ²² »ç¿ëÇؼ´Â ¾È µÈ´Ù
¾ÆÀÌÅÛ 30_ ºñµ¿±â ¸Þ¼µå¸¦ »ç¿ëÇؼ ½º·¹µå »ý¼º°ú ÄÜÅؽºÆ® ÀüȯÀ» ÇÇÇ϶ó
¾ÆÀÌÅÛ 31_ ºÒÇÊ¿äÇÑ ÄÜÅؽºÆ® ¸¶¼È¸µÀ» ÇÇÇ϶ó
¾ÆÀÌÅÛ 32_ ºñµ¿±â ÀÛ¾÷Àº ŽºÅ© °´Ã¼¸¦ »ç¿ëÇØ ±¸¼ºÇ϶ó
¾ÆÀÌÅÛ 33_ ŽºÅ© Ãë¼Ò ÇÁ·ÎÅäÄÝ ±¸ÇöÀ» °í·ÁÇ϶ó
¾ÆÀÌÅÛ 34_ ºñµ¿±â ¸Þ¼µåÀÇ ¹Ýȯ°ªÀ» ij½ÃÇÏ´Â °æ¿ì ValueTask¸¦ »ç¿ëÇ϶ó
CHAPTER 4 º´·Ä ó¸®
¾ÆÀÌÅÛ 35_ PLINQ°¡ º´·Ä ¾Ë°í¸®ÁòÀ» ±¸ÇöÇÏ´Â ¹æ¹ýÀ» ÀÌÇØÇ϶ó
¾ÆÀÌÅÛ 36_ ¿¹¿Ü¸¦ ¿°µÎ¿¡ µÎ°í º´·Ä ¾Ë°í¸®ÁòÀ» ¸¸µé¶ó
¾ÆÀÌÅÛ 37_ ½º·¹µå¸¦ »ý¼ºÇÏÁö ¸»°í ½º·¹µå Ç®À» »ç¿ëÇ϶ó
¾ÆÀÌÅÛ 38_ ½º·¹µå °£ Ä¿¹Â´ÏÄÉÀ̼ǿ¡´Â BackgroundWorker¸¦ »ç¿ëÇ϶ó
¾ÆÀÌÅÛ 39_ XAML ȯ°æ¿¡¼ ½º·¹µå °£ È£ÃâÀ» ÀÌÇØÇ϶ó
¾ÆÀÌÅÛ 40_ µ¿±âÈ¿¡´Â lock()À» ÃÖ¿ì¼±À¸·Î »ç¿ëÇ϶ó
¾ÆÀÌÅÛ 41_ ¶ôÀº °¡´ÉÇÑ ÇÑ Á¼Àº ¹üÀ§¿¡ Àû¿ëÇ϶ó
¾ÆÀÌÅÛ 42_ Àá±ä ¿µ¿ª¿¡¼´Â ¿ÜºÎ ÄÚµå È£ÃâÀ» »ï°¡¶ó
CHAPTER 5 µ¿Àû ÇÁ·Î±×·¡¹Ö
¾ÆÀÌÅÛ 43_ µ¿Àû ŸÀÌÇÎÀÇ Àå´ÜÁ¡À» ÀÌÇØÇ϶ó
¾ÆÀÌÅÛ 44_ Á¦³×¸¯ ŸÀÔ ¸Å°³º¯¼öÀÇ ·±Å¸ÀÓ Å¸ÀÔÀ» È°¿ëÇÏ·Á¸é µ¿Àû ŸÀÌÇÎÀ» »ç¿ëÇ϶ó
¾ÆÀÌÅÛ 45_ µ¥ÀÌÅÍ ÁÖµµ µ¿Àû ŸÀÔ¿¡´Â DynamicObject³ª IDynamicMetaObjectProvider¸¦ »ç¿ëÇ϶ó
¾ÆÀÌÅÛ 46_ Ç¥Çö½Ä APIÀÇ »ç¿ë¹ýÀ» ÀÍÇôµÎ¶ó
¾ÆÀÌÅÛ 47_ Public API¿¡¼´Â µ¿Àû °´Ã¼ »ç¿ëÀ» ÃÖ¼ÒÈÇ϶ó
CHAPTER 6 ±Û·Î¹ú C# Ä¿¹Â´ÏƼ¿¡ Âü¿©Çϱâ
¾ÆÀÌÅÛ 48_ °¡Àå Àαâ ÀÖ´Â ´äÀÌ ¾Æ´Ñ ÃÖ°íÀÇ ´äÀ» ãÀ¸¶ó
¾ÆÀÌÅÛ 49_ ¸í¼¼¿Í ÄÚµå Çâ»ó¿¡ ±â¿©Ç϶ó
¾ÆÀÌÅÛ 50_ ºÐ¼®±â¸¦ »ç¿ëÇؼ ÀÚµ¿È 󸮸¦ °í¹ÎÇ϶ó