½ÇÁ¦ ÇÁ·Î±×·¥ Á¦ÀÛ
Áö±Ý±îÁö ¾î¼¸é ¸Õ±æÀ» µ¹¾Æ ¿Ô´Ù. ÀÌÁ¦ ½ÇÁ¦ ÇÁ·Î±×·¥ Á¦À۽à »ç¿ëÇÏ´Â ¹æ½ÄÀ¸·Î ÇÁ·Î±×·¥À» ÀÛ¼ºÇØ º¸°Ú´Ù.
Visual Studio .NETÀ» ½ÇÇàÇÏ¿© ÆÄÀÏ ¸Þ´ºÀÇ »õ·Î ¸¸µé±âÀÇ ºÎ¸Þ´º ÇÁ·ÎÁ§Æ®¸¦ ¼±ÅÃÇÏ¸é ´ÙÀ½°ú °°Àº ´ëÈ »óÀÚ°¡ »ý¼ºµÈ´Ù.
ÀÌÁ¦ Windows ÀÀ¿ë ÇÁ·Î±×·¥À» ¼±ÅÃÇϰí À̸§À» Àû´çÈ÷ ÀÔ·Â(BaseProgram¶ó°í ÀÔ·Â)ÇÑ ÈÄ È®ÀÎÀ» ¼±ÅÃÇÏ¸é ´ÙÀ½°ú °°ÀÌ ¼Ö·ç¼Ç Ž»ö±â¿¡ ÇÁ·ÎÁ§Æ®°¡ Ãß°¡ µÈ´Ù.
¼Ö·ç¼Ç Ž»ö±âÀÇ ½ÇÁ¦ ¼Ò½º ÆÄÀÏÀÎ Form1.cs´Â Àû´çÈ÷ À̸§À» º¯°æ(¿©±â¼´Â BaseProgram.cs)ÇÑ´Ù. ÂüÁ¶¸¦ ÆîÃÄ º¸¸é ¾Õ¿¡¼ ¼³¸íÇÑ °Í º¸´Ù Á»´õ ¸¹Àº ¾î¼Àºí¸®°¡ ÂüÁ¶ µÇ¾î ÀÖ´Ù(ÂüÁ¶´Â ¸¹ÀÌ ÇØµµ »ç¿ëÇÏÁö ¾ÊÀ¸¸é ÄÄÆÄÀÏÀÌ ÀÚµ¿À¸·Î ¹«½ÃµÇ¹Ç·Î »ó°ü¾ø´Ù). App.ico´Â Icon ÆÄÀÏÀ̰í AssemblyInfo.cs´Â Versionµî ȯ°æ ¼³Á¤À» ÇÏ´Â ³»¿ëµéÀÌ µé¾î ÀÖ´Ù. ³»¿ëÀ» ¾Ë±â Àü¿¡¼ ¼Õ´ëÁö ¾Ê´Â °ÍÀÌ ÁÁ´Ù.
ÀÌÁ¦ ¼Ó¼º âÀ» º¸ÀÚ. ÇÊÀÚ´Â ¼³¸íÇϱâ ÁÁ°Ô ¼Ö·ç¼Ç Ž»ö±â¸¦ ´Ý¾Æ ¾Æ·¡¿Í °°ÀÌ ¼Ó¼º âÀÌ È¸é¿¡ ¸¹ÀÌ ³ª¿À°Ô ¼³Á¤Çß´Ù. ¸¸¾à ¼Ó¼ºÃ¢À» ´Ý¾ÒÀ¸¸é º¸±â ¸Þ´ºÀÇ ¼Ó¼ºÃ¢À» ¼±ÅÃÇϸé ȸ鿡 ³ªÅ¸³´Ù.
¼Ó¼º Áß µðÀÚÀÎÀÇ (Name)Àº Ŭ·¡½º À̸§ÀÌ´Ù. ÀÌ À̸§À» Àû´çÈ÷(MainForm) ¼öÁ¤ÇÑ´Ù. ¼Ó¼ºÃ¢¿¡¼ ¾Æ·¡·Î Á¶±Ý ³»¸®¸é Text¶ó´Â Attribute°¡ Form1À¸·Î µÇ¾î Àִµ¥ Title ¹Ù¿¡ Ç¥½ÃµÇ´Â ¹®ÀÚ¿ÀÌ´Ï Àû´çÈ÷ ¼öÁ¤ÇÑ´Ù. ÀÌÁ¦ ÄÄÆÄÀÏÀ» ÇÏ¸é ¿¡·¯°¡ Çϳª ¹ß»ýÇϴµ¥ ÇâÈÄ Source¿¡¼ ¼öÁ¤ÇÒ °ÍÀÌ´Ù.
ÀÌÁ¦ Source¸¦ º¸ÀÚ. Source´Â ¼Ö·ç¼Ç Ž»ö±â BaseProgram.cs¿¡¼ ¸¶¿ì½º ¿À¸¥ÂÊ ¹öưÀ» ¼±ÅÃÇÏ¿© »ý¼ºµÈ ÆË¾÷ ¸Þ´º¿¡¼ ÄÚµå º¸±â¸¦ ¼±ÅÃÇϸé Source¸¦ º¼ ¼ö ÀÖ´Ù. Âü°í·Î BaseProgram.cs¸¦ ´õºíŬ¸¯ÇÏ¸é µðÀÚÀÎÀÌ ÀÖ´Â .cs ÆÄÀÏÀ̶ó¸é À§ ±×¸²°ú °°ÀÌ µðÀÚÀÎ ¸ðµå·Î ¿¸°´Ù.
using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data;
namespace BaseProgram { /// <summary> /// Form1¿¡ ´ëÇÑ ¿ä¾à ¼³¸íÀÔ´Ï´Ù. /// </summary> public class MainForm : System.Windows.Forms.Form { /// <summary> /// Çʼö µðÀÚÀÌ³Ê º¯¼öÀÔ´Ï´Ù. /// </summary> private System.ComponentModel.Container components = null;
public MainForm() { // // Windows Form µðÀÚÀÌ³Ê Áö¿ø¿¡ ÇÊ¿äÇÕ´Ï´Ù. // InitializeComponent();
// // TODO: InitializeComponent¸¦ È£ÃâÇÑ ´ÙÀ½ »ý¼ºÀÚ Äڵ带 Ãß°¡ÇÕ´Ï´Ù. // }
/// <summary> /// »ç¿ë ÁßÀÎ ¸ðµç ¸®¼Ò½º¸¦ Á¤¸®ÇÕ´Ï´Ù. /// </summary> protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); }
Windows Form µðÀÚÀ̳ʿ¡¼ »ý¼ºÇÑ ÄÚµå
/// <summary> /// ÇØ´ç ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ÁÖ ÁøÀÔÁ¡ÀÔ´Ï´Ù. /// </summary> [STAThread] static void Main() { Application.Run(new Form1()); } } } |
¾Õ¿¡¼ ¼öµ¿À¸·Î ¿½ÉÈ÷ Source¸¦ ÀÛ¼ºÇÑ »ç¶÷Àº Source°¡ ¸¹ÀÌ ´«¿¡ ÀÍÀ» °ÍÀÌ´Ù. ¼öµ¿À¸·Î ÀÛ¼ºÇÒ ¶§ ÀÛ¼ºÇÏÁö ¾ÊÀº °ÍÀ» À§ÁÖ·Î Source¸¦ ¼³¸íÇØ º¸°Ú´Ù.
1. namespace BaseProgram
¹®¹ý Á¤¸®¿¡¼ C#Àº namespace°¡ Á¸ÀçÇÑ´Ù°í ¼³¸íÇß´Ù. ±×·¯³ª ±× ÀÌÈÄ¿¡ ¼öµ¿À¸·Î ÀÛ¼ºÇÑ ÇÁ·Î±×·¥µé¿¡¼´Â namespace¸¦ »ç¿ëÇÏÁö ¾Ê¾Ò´Ù. ±×·¯¸é namespace¸¦ ¼±¾ðÇÏÁö ¾ÊÀº ClassµéÀº ¾î¶»°Ô µÇ´Â°¡? ±×°ÍÀº À̸§¾ø´Â namespace ¼Ò¼ÓÀÌ µÇ¾î ¹®Á¦¾øÀÌ µ¿ÀÛÇÑ´Ù.
2. InitializeComponent()
MainForm »ý¼ºÀÚ¿¡¼ FormÀ» ÃʱâÈ Çϰí Event¸¦ ¿¬°áÇß´ø °ÍÀ» ±â¾ïÇÒ °ÍÀÌ´Ù. »ý¼ºÀÚ¿¡¼ ¼öÇàÇÏ´ø ÀÌ ¸ðµç ÀÛ¾÷À» Visual StudioÀÇ ¼Ó¼ºÃ¢¿¡¼ ¸ðµÎ ÀÛ¼ºÇÏ°Ô µÉ °ÍÀ̹ǷΠInitializeComponent¶ó´Â ÇÔ¼ö¸¦ Çϳª ¸¸µé¾î º°µµ·Î È£ÃâÇÏ´Â ±¸Á¶·Î µÇ¾î ÀÖ´Ù.
3. Windows Form µðÀÚÀ̳ʿ¡¼ »ý¼ºÇÑ ÄÚµå
ÀÌ ºÎºÐ¿¡ Visual StudioÀÇ ¼Ó¼ºÃ¢¿¡¼ ÀÛ¼ºÇÑ ÄÚµåµéÀÌ µé¾î °¥ °ÍÀÌ´Ù. ÀÌ ºÎºÐÀ» ÆîÃÄ º¸¸é ³»ºÎ¿¡ InitializeComponent Method°¡ ¼±¾ðµÇ¾î ÀÖ°í ¼Ó¼ºÃ¢¿¡¼ ¼³Á¤ÇÑ ³»¿ëµéÀÌ ±× Method ³»¿¡ µé¾î ÀÖ´Ù.
4. Dispose
FormÀÌ Á¾·áµÉ ¶§ È£ÃâµÇ´Â MethodÀÌ´Ù.
5. Application.Run(new Form1())
À§ Source¸¦ º¸¸é Class°¡ MainFormÀ¸·Î µÇ¾î ÀÖ´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù. ±×·¯³ª ±âº»ÀûÀ¸·Î »ý¼ºµÇ´Â Form1À̶ó´Â À̸§À¸·Î ¾îÇø®ÄÉÀ̼ÇÀ» µ¿ÀÛ½Ã۰í ÀÖ´Ù. µû¶ó¼ ¿©±â¿¡¼ ¿¡·¯°¡ ¹ß»ýÇÑ´Ù. Form1À» MainFormÀ¸·Î ¼öÁ¤ÇÏ¸é µÈ´Ù.
´Ù½ÃÇѹø Á¤¸®¸¦ Çϸé, ÇÁ·ÎÁ§Æ®¸¦ ¸¸µçÈÄ, ¼Ö·ç¼Ç Ž»ö±â¿¡¼ Form1.cs¸¦ ÇÁ·ÎÀèÆ®À̸§.cs·Î º¯°æÇϰí, ¼Ó¼ºÃ¢¿¡¼ (Name)À» MainFormÀ¸·Î Text¸¦ Title ¹Ù¿¡ Ç¥½ÃµÉ À̸§À¸·Î º¯°æÇϸç, Source¿¡¼ Form1À» MainFormÀ¸·Î º¯°æÇÑ´Ù. ÇÁ·Î±×·¥ ÀÛ¼º½Ã ÀÌ °úÁ¤À» ²À ÇÑ ÈÄ ½ÃÀÛÇÏ´Â ¹ö¸©À» µéÀ̱⠹ٶõ´Ù.
ÀÌÁ¦ ¸¶¿ì½º¿Í Űº¸µå¸¦ ó¸®ÇØ º¸µµ·Ï ÇϰڴÙ. Visual StudioÀÇ ¼Ó¼ºÃ¢ÀÇ À§ÂÊ ¹ø°³ ¸ð¾çÀÇ ¾ÆÀÌÄÜ(À̺¥Æ® ¾ÆÀÌÄÜ)À» ¼±ÅÃÇϸé ȸéÀº ´ÙÀ½°ú °°ÀÌ ¹Ù²ï´Ù.
ÀÌ È¸éÀÌ ³ª¿À±â À§Çؼ´Â À§ ±×¸²°ú °°ÀÌ µðÀÚÀÎ ¸ðµå ÆÄÀÏÀ» ¿¾î¾ß¸¸ ÇÑ´Ù. MouseDown¿¡¼ ¸¶¿ì½º ´õºíŬ¸¯ Çϸé ÀÚµ¿À¸·Î MouseDownÀ̶ó´Â Event°¡ ¿¬°áÀÌ µÇ°í Delegate¿¡ ÀÇÇØ È£ÃâµÉ ÇÔ¼ö°¡ »ý¼ºµÇ¾î ÆíÁýÇÒ ¼ö ÀÖµµ·Ï ±× À§Ä¡·Î À̵¿ÇÑ´Ù. ¿©±â¼´Â °£´ÜÈ÷ MessageBox.Show("¸¶¿ì½º°¡ ´·¯Á³½À´Ï´Ù.");¸¦ ÀÔ·ÂÇÑ´Ù. KeyDownµµ °°Àº ¹æ¹ýÀ¸·Î ó¸®ÇÑ´Ù.
ÀÌÁ¦ ´Ù½Ã ¼Ò½º¸¦ º¸µµ·Ï ÇϰڴÙ. ¾Æ·¡ Source´Â À§¿¡¼ ¼³¸íÇÑ ³»¿ëÀº µÇµµ·Ï »ý·«Çϰí, Windows Form µðÀÚÀ̳ʿ¡¼ »ý¼ºÇÑ Äڵ带 ÆîÃļ ³»ºÎ±îÁö º¸ÀΰÍÀÌ´Ù.
namespace BaseProgram { public class MainForm : System.Windows.Forms.Form { public MainForm() { InitializeComponent(); }
#region Windows Form µðÀÚÀ̳ʿ¡¼ »ý¼ºÇÑ ÄÚµå /// <summary> /// µðÀÚÀÌ³Ê Áö¿ø¿¡ ÇÊ¿äÇÑ ¸Þ¼µåÀÔ´Ï´Ù. /// ÀÌ ¸Þ¼µåÀÇ ³»¿ëÀ» ÄÚµå ÆíÁý±â·Î ¼öÁ¤ÇÏÁö ¸¶½Ê½Ã¿À. /// </summary> private void InitializeComponent() { // // MainForm // this.AutoScaleBaseSize = new System.Drawing.Size(6, 14); this.ClientSize = new System.Drawing.Size(292, 273); this.Name = "MainForm"; this.Text = "Å×½ºÆ® ÇÁ·Î±×·¥"; this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.MainForm_KeyDown); this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.MainForm_MouseDown);
} #endregion
[STAThread] static void Main() { Application.Run(new MainForm()); }
private void MainForm_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) { MessageBox.Show("¸¶¿ì½º°¡ ´·¯Á³½À´Ï´Ù."); }
private void MainForm_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) { MessageBox.Show("Űº¸µå°¡ ´·¯Á³½À´Ï´Ù."); } } }
|
InitializeComponent Method¿¡ Event°¡ ¿¬°áµÇ¾î ÀÖ°í Delegate¿¡ ÀÇÇØ È£ÃâµÉ MainForm_MouseDown°ú MainForm_KeyDownÀÌ Á¤ÀÇµÈ °ÍÀ» º¼ ¼ö ÀÖ´Ù.
ÀÌÁ¦ ¾î¼Àºí¸®(.exe, .dll) ±¸Á¶¿¡ ´ëÇØ ¾Ë¾Æ º¸°Ú´Ù. ÇÁ·ÎÁ§Æ® µð·ºÅ丮ÀÇ binÀÇ Debug(¹èÆ÷¸¦ À§ÇØ Release·Î ÄÄÆÄÀÏ Çϸé Release) µð·ºÅ丮¸¦ º¸¸é ´ÙÀ½°ú °°ÀÌ ÇÁ·ÎÁ§Æ®À̸§.exe ÆÄÀÏÀÌ »ý¼ºµÈ °ÍÀ» º¼¼ö ÀÖ´Ù.
BaseProgram.exe¸¦ ¸¶¿ì½º·Î ´õºíŬ¸¯ÇÏ¸é ½ÇÇàÀÌ µÈ´Ù. ¹¹ º° °Í ¾ø´Ù. ±×·¯³ª C#À¸·Î ÀÛ¼ºÇÑ ½ÇÇàÆÄÀϰú C++·Î ÀÛ¼ºÇÑ ½ÇÇàÆÄÀÏÀº ³»ºÎ ±¸Á¶°¡ ¿ÏÀüÈ÷ ´Ù¸£´Ù. C++·Î ÀÛ¼ºÇÑ ½ÇÇàÆÄÀÏÀº ÇöÀç OS¿¡¼ ½ÇÇà °¡´ÉÇÑ Native ÄÚµå·Î ±¸¼ºµÇ¾î ÀÖ´Ù. ±×·¯³ª C#À¸·Î ÀÛ¼ºÇÑ ½ÇÇàÆÄÀÏÀº ´ÙÀ½°ú °°Àº ±¸Á¶·Î ±¸¼ºµÇ¾î ÀÖ´Ù.
- CLR(Common Language Runtime) Loader : CLRÀ» ¸Þ¸ð¸®¿¡ ÀûÀç ½ÃŰ´Â ±â´ÉÀ» ¼öÇàÇÑ´Ù.
- Menifest : ¾î¼Àºí¸®ÀÇ Àüü ¿ä¾à Á¤º¸(Version, Security Á¤º¸, ¸µÅ©µÈ ´Ù¸¥ ¾î¼Àºí¸® Á¤º¸)¸¦ °¡Áö°í ÀÖ´Ù(Ư¼öÇÑ Metadata·Î º¸¸é µÈ´Ù).
- Metadata : ÄÚµåÀÇ ¿ÜÇü Á¤º¸(namespace Á¤º¸, Type Á¤º¸, Member Á¤º¸)¸¦ °¡Áø´Ù(C++ÀÇ Header ÆÄÀϰú ºñ½ÁÇÑ ±â´É ¼öÇà).
- MSIL(MicroSoft Intermediate Language) : C#À¸·Î ÀÛ¼ºÇÑ ½ÇÁ¦ ³»¿ëÀÌ ±¹Á¦ Ç¥ÁØÀÎ IL¾ð¾î·Î º¯°æµÇ¾î µé¾î ÀÖ´Ù.
½ÇÇàÆÄÀÏÀ» ¸¶¿ì½º·Î ´õºí Ŭ¸¯ ÇÏ´Â ¼ø°£ CLRÀÌ ¸Þ¸ð¸®¿¡ ÀûÀçµÇ¾î ÀÖÁö ¾Ê´Ù¸é ÀûÀç½ÃŰ°Ô µÈ´Ù. ÀûÀçµÈ CLRÀÌ ¾î¼Àºí¸®¸¦ ºÐ¼®ÇÏ¿© ½ÇÇàÀ» ÇØÁØ´Ù. CLR ³»ºÎ¸¦ ¾à°£ ¼³¸íÇÏ¸é ¾î¼Àºí¸® ³»ÀÇ MSILÀ» JIT(Just In Time) ÄÄÆÄÀÏ·¯°¡ Native ÄÚµå·Î ÄÄÆÄÀÏÇÏ¿© ½ÇÇàÇÏ´Â °ÍÀÌ´Ù. ÀÌ ±¸Á¶ ¶§¹®¿¡ .NET(C#, C++ .NET, Basic .NET µî)À¸·Î ¸¸µç ½ÇÇàÆÄÀÏÀº CLRÀÌ ¾øÀ¸¸é µ¿ÀÛÇÏÁö ¾Ê´Â´Ù. À̰ÍÀÌ CLRÀÌ Æ÷ÇÔµÈ .NET Framework¸¦ ¼³Ä¡ÇØÁÖ¾î¾ß ÇÏ´Â ÀÌÀ¯ÀÌ´Ù.
ÀÌ ½ÇÇà ±¸Á¶¿¡ ÀÇÇØ ´ÙÀ½°ú °°Àº Àå´ÜÁ¡ÀÌ ÀÖ´Ù.
ÀåÁ¡ | ´ÜÁ¡ |
- ȣȯ¼ºÀÌ ¶Ù¾î ³ª´Ù. - CPU¿¡ µû¸¥ ½ÇÇà½Ã ÃÖÀûÈ |
- ½ÇÇà½Ã JIT ÄÄÆÄÀÏÀ» ¼öÇàÇϹǷΠÃʱ⠼öÇà ¼Óµµ ÀúÇϰ¡ ÀÖ´Ù.
|
´Ù¿î·Îµå