static ¸â¹öµéÀº Ŭ·¡½º°¡ »ý¼ºµÇ±â Àü¿¡ ¸Þ¸ð¸®°¡ »ý¼ºÀÌ µË´Ï´Ù. ±×·¸´Ù°í ÇÑ´Ù¸é ½ºÅÂÆ½ÀÇ ¸â¹öÀÇ °ªÀ» ÃʱâÈ ÇÒ ¼ö ÀÖ´Â °÷Àº ¼±¾ðÇÏ´Â ¼ø°£¿¡ ÇÒ´çÇÒ ¼ö ¹Û¿¡ ¾ø½À´Ï´Ù. µüÈ÷ ´Ù¸¥ °÷¿¡¼ ÇÒ ¶§°¡ ¾øÀ¸´Ï±î¿ä! ±× ¹æ¹ý À̿ܿ¡ ½ºÅÂÆ½»ý¼ºÀÚ(Static Constructor)¸¦ ÀÌ¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ´ÙÀ½Àº ½ºÅÂÆ½»ý¼ºÀÚ¸¦ »ç¿ëÇÏ¿© static ¸â¹öµéÀ» ÃʱâÈÇÏ´Â ¿¹Á¦ÀÔ´Ï´Ù.
|
& |
StaticConstTest.cs |
Ü static»ý¼ºÀÚ¸¦ »ç¿ëÇÏ¿© static¸â¹ö¸¦ ÃʱâÈ |
|
using System; class StaticConst{ public static int sInt=0; //static ¸â¹öÇʵå static StaticConst(){ //static »ý¼ºÀÚ sInt=10; Console.Write("sInt="+sInt+" : static»ý¼ºÀÚ!!!"); } public StaticConst(){ //µðÆúÆ® »ý¼ºÀÚ // } public static void InitSint(int a){ //static ¸Þ¼µå sInt=a; } } class StaticConstTest{ public static void Main(){ int a = StaticConst.sInt; }//main }//class | ||
|
C:\C#Example\03>csc StaticConstTest.cs C:\C#Example\03>StaticConstTest sInt=10 : static»ý¼ºÀÚ !!! | ||
À§¿¡¼ StaticConst()°¡ ¹Ù·Î ½ºÅÂÆ½»ý¼ºÀÚÀÔ´Ï´Ù. ½ºÅÂÆ½»ý¼ºÀÚ´Â °´Ã¼¸¦ »ý¼ºÇϱâ ÀüÀ̳ª ½ºÅÂÆ½ ¸â¹ö¸¦ ÂüÁ¶Çϱâ Àü¿¡ ½ºÅÂÆ½ ¸â¹öµéÀ» ÃʱâÈÇϴµ¥ »ç¿ëÇÕ´Ï´Ù. ÀÌ ½ºÅÂÆ½ ÃʱâÈ ºí·ÏÀÌ ¾ðÁ¦ È£ÃâµÇ´ÂÁö, ½ºÅÂÆ½(static)ÀÇ ¸Þ¸ð¸® ÇÒ´çÀÇ ½ÃÁ¡Àº ¾ðÁ¦ÀÎÁö ¾Ë¾Æ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.
À§¿¡¼ ¿¹Á¦¿¡¼ StaticConst Ŭ·¡½ºÀÇ °´Ã¼¸¦ »ý¼ºÇÏÁö ¾Ê¾Ò½À´Ï´Ù. ´ÜÁö, StaticConstÀÇ ½ºÅÂÆ½ ¸â¹öÇʵ忡 Á¢±Ù¸¸ ÇßÀ» »ÓÀÔ´Ï´Ù. ½ºÅÂÆ½Àº Ŭ·¡½ºÀÇ À̸§À¸·Î ½ºÅÂÆ½ ¸â¹öÇʵ带 »ç¿ëÇϸé ÀÚµ¿À¸·Î ¸Þ¸ð¸®°¡ »ý¼ºµÇ¸ç ±×¿Í µ¿½Ã¿¡ ½ºÅÂÆ½»ý¼ºÀÚ ¶ÇÇÑ È£ÃâµÇ´Â °ÍÀÔ´Ï´Ù.
|
¢Ã ½ºÅÂÆ½»ý¼ºÀÚ(Static Constructor)ÀÇ Æ¯Â¡ |
|
q Á¢±ÙÁ¦¾î¸¦ »ç¿ëÇÒ ¼ö ¾øÀ½ q ¸Å°³º¯¼ö¸¦ °¡Áú ¼ö ¾øÀ½ |
½ºÅÂÆ½»ý¼ºÀÚ¿¡ Á¢±ÙÁ¦¾î¿Í ¸Å°³º¯¼ö¸¦ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. À̰ÍÀº ±ÔÄ¢ÀÌ´Ï Áö۱⸸ ÇÏ¸é µË´Ï´Ù. ÇÏÁö¸¸ ±âÀÌÇÑ ÀÏÀÌ ÀÖ½À´Ï´Ù. À§ÀÇ ¿¹Á¦¿¡¼ ¸Þ¼µåÀÇ ÇüŰ¡ ¶È°°Àº °ÍÀÌ µÎ°³ Á¸ÀçÇÕ´Ï´Ù. Áï, »ý¼ºÀÚ ¸Þ¼µå°¡ ¶È°°´Ù´Â °ÍÀÔ´Ï´Ù. Çϳª´Â ½ºÅÂÆ½»ý¼ºÀÚÀÌ¸ç ¶Ç Çϳª´Â Ŭ·¡½ºÀÇ µðÆúÆ® »ý¼ºÀÚ¸¦ ¸¸µé¾î ³ÖÀº °ÍÀÔ´Ï´Ù. ¸Þ¼µåÀÇ À̸§°ú ¸Å°³º¯¼ö°¡ °°À» ¼ö ÀÖ´Â À¯ÀÏÇÑ °æ¿ìÀÔ´Ï´Ù. ½ºÅÂÆ½Àº Ŭ·¡½º¿Í ÀüÇô º°°³·Î »ý°¢µÇ±â ¶§¹®¿¡ ÀÌ·¯ÇÑ ±¸¹®µµ °¡´ÉÇÑ °ÍÀÌÁö¸¸ ¾ÆÁÖ À¯º°³ ÇüÅÂÀÌ´Ï Àß ±â¾ïÇØ µÎ½Ã±â ¹Ù¶ø´Ï´Ù.
±×·¸´Ù¸é ÀÌ·± Áú¹®µµ ´øÁ® º¼ ¼ö ÀÖ°Ú±º¿ä. ¿Ö Main() ¸Þ¼µå°¡ staticÀ¸·Î µÇ¾î ÀÖÀ»±î¿ä? ±×¸®°í ¿Ö Main() ¸Þ¼µå°¡ Ŭ·¡½ºÀÇ ¿ÜºÎ¿¡ ÀÖ´Â °ÍÀ¸·Î »ý°¢Ç϶ó°í ÇßÀ»±î¿ä? C#¿¡¼ Main() ¸Þ¼µå¸¦ ½ÇÇàÇÒ ¶§ CLR¿¡¼ ½ÇÇà Ŭ·¡½ºÀÇ °´Ã¼°¡ »ý¼ºµÇ±â Àü¿¡ Á¢±ÙÇØ¾ß Çϱ⠶§¹®¿¡ staticÀ¸·Î ¼±¾ð µÇ¾î ÀÖ´Â °ÍÀÔ´Ï´Ù. static ¸â¹ö¸Þ¼µåÀÇ Á¢±ÙÀº °´Ã¼ÀÇ »ý¼º°ú ÀüÇô »ó°üÀÌ ¾ø½À´Ï´Ù. ¸¸¾à, ÇØ´ç Ŭ·¡½º°¡ Main() ¸Þ¼µå¸¦ Æ÷ÇÔÇϰí ÀÖ°í ÇØ´ç Ŭ·¡½º¸¦ ½ÇÇàÇϸé CLR¿¡¼´Â static Main() ¸Þ¼µå¸¦ ã°Ô µË´Ï´Ù. ÀÌ Main() ¸Þ¼µå¿¡ Á¢±ÙÇÏ´Â ±â¹ýÀº ´ç¿¬È÷ staticÀÇ ±â¹ýÀ» »ç¿ëÇϰí ÀÖ´Â °ÍÀÔ´Ï´Ù.
| jabookÀúÀÚ¸íÇÔ |
|
Á¦¸ñ:¼Ò¼³°°ÀºC# Á¦3°ÀÇ ÀúÀÚ:ÃÖ¿µ°ü |