using System;
using static System.Console;
namespace Hello
{
//ํ๋ก๊ทธ๋จ ์คํ์ด ์์๋๋ ๊ณณ
class MainApp
{
static void Main(string[] args)
{
if(args.Length == 0)
{
Console.WriteLine("์ฌ์ฉ๋ฒ : Hello.exe<์ด๋ฆ>");
return;
}
WriteLine("Hello, {0}!",args[0]);
}
}
}
using System; //System ๋ค์์คํ์ด์ค ์์ ์๋ ํด๋์ค๋ฅผ ์ฌ์ฉํ๊ฒ ๋ค๊ณ ์ปดํ์ผ๋ฌ์๊ฒ ์๋ฆผ
//System.Console.WriteLine์ Console.WriteLine๋ก ์ค์ฌ์ธ ์ ์๊ฒ ํด์ค
using static System.Console; //Console.WriteLine์ WriteLine๋ก ์ค์ฌ์ธ ์ ์๊ฒ ํด์ค
namespace Hello
{
class MainApp //๋ค๋ฅธ ๋ค์์คํ์ด์ค์์ MainApp ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด using Hello; ๋ฌธ์ฅ์ ์ด์ฉํด์ Hello ๋ค์์คํ์ด์ค๋ฅผ ์ฐธ์กฐํ๊ฑฐ๋ Hello.MainApp์ฒ๋ผ ํด๋์ค๊ฐ ์์๋์ด ์๋ ๋ค์์คํ์ด์ค์ ํด๋์ค์ ์ด๋ฆ์ ๋ถ์ฌ์ค์ผ ํ๋ค.
{
//ํ๋ก๊ทธ๋จ ์คํ์ด ์์๋๋ ๊ณณ
static void Main(string[] args) //Main() ๋ฉ์๋, Main() ๋ฉ์๋๋ ํ๋ก๊ทธ๋จ์ ์์์ ๋ด๋นํ๋ ํน๋ณํ ๋ฉ์๋์ด๊ธฐ ๋๋ฌธ์ Main() ๋ฉ์๋์ ์ฝ๋ ๋ธ๋ก์ด ๋๋๋ฉด ํ๋ก๊ทธ๋จ๋ ๊ฐ์ด ์ข
๋ฃ๋๋ค.
{
if(args.Length == 0)
{
WriteLine("์ฌ์ฉ๋ฒ : Hello.exe<์ด๋ฆ>");
return;//return์ ์๋ ๋ฉ์๋์ด ํธ์ถ์์๊ฒ ๋ฉ์๋ ์คํ ๊ฒฐ๊ณผ๋ฅผ ๋๋ ค์ฃผ๋ ์ญํ ์ ํ์ง๋ง, ์ฌ๊ธฐ์๋ Main() ๋ฉ์๋๋ฅผ ์ข
๋ฃํ๋ ์ฉ๋๋ก๋ง ์ฌ์ฉ๋์๋ค
}
WriteLine("Hello, {0}!",args[0]);
}
}
}
using ํค์๋๋ง ์ฌ์ฉํ๋ฉด ๋ค์์คํ์ด์ค ์ ์ฒด๋ฅผ ์ฌ์ฉํ๋ค๋ ์๋ฏธ์ง๋ง
using static ์ ์ด๋ค ๋ฐ์ดํฐ ํ์(์: ํด๋์ค)์ ์ ์ ๋ฉค๋ฒ๋ฅผ ๋ฐ์ดํฐ ํ์์ ์ด๋ฆ์ ๋ช ์ํ์ง ์๊ณ ์ฐธ์กฐํ๊ฒ ๋ค๊ณ ์ ์ธํ๋ ๊ธฐ๋ฅ์ ํ๋ค. System.Console์ ์ ์ ๋ฉค๋ฒ๋ฅผ ์ฌ๋ฟ ๊ฐ์ง๊ณ ์๋ค.
์ฝ์์ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๋ Write(), WriteLine() ๋ฉ์๋(์ผ๋ จ์ ๊ธฐ๋ฅ์ ์ํํ๋ ๋ช ๋ น์ด)์
์ฝ์๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅ๋ฐ๋ Read(), ReadLine() ๋ฉ์๋๊ฐ
Console ํด๋์ค์ ๋ํ์ ์ธ ์ ์ ๋ฉค๋ฒ์ด๋ค.
namespace๋ ์ฑ๊ฒฉ์ด๋ ํ๋ ์ผ์ด ๋น์ทํ ํด๋์ค, ๊ตฌ์กฐ์ฒด, ์ธํฐํ์ด์ค, ๋๋ฆฌ์, ์ด๊ฑฐ ํ์ ๋ฑ์ ํ๋์ ์ด๋ฆ ์๋ ๋ฌถ๋ ์ผ์ ํ๋ค. ์๋ฅผ ๋ค์ด System.IO ๋ค์ ์คํ์ด์ค์๋ ํ์ผ ์ ์ถ๋ ฅ์ ๋ค๋ฃจ๋ ๊ฐ์ข ํด๋์ค, ๊ตฌ์กฐ์ฒด, ๋๋ฆฌ์, ์ด๊ฑฐ ํ์๋ค์ด ์๊ณ , System.Printing ๋ค์์คํ์ด์ค์๋ ์ธ์์ ๊ด๋ จ๋ ์ผ์ ํ๋ ํด๋์ค ๋ฑ์ด ์์๋์ด ์๋ค.
.NET ํด๋์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ 1๋ง ๊ฐ๊ฐ ํจ์ฌ ๋๋ ํด๋์ค๊ฐ ์์ด๋ ํ๋ก๊ทธ๋๋จธ๋ค์ด ์ ํ ํผ๋์ ๋๋ผ์ง ์๊ณ ์ด๋ค ํด๋์ค๋ฅผ ์ฌ์ฉํ ์ ์๋ ๋น๊ฒฐ์ ๊ฐ ์ฉ๋๋ณ/๋ถ์ผ๋ณ๋ก ์ ๋ฆฌ๋์ด ์๋ ๋ค์์คํ์ด์ค ๋๋ถ์ด๋ค.
class MainApp
class ๋ C# ํ๋ก๊ทธ๋จ์ ๊ตฌ์ฑํ๋ ๊ธฐ๋ณธ ๋จ์๋ก์ ๋ฐ์ดํฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ธฐ๋ฅ(์ด๊ฒ์ ๋ฉ์๋๋ผ๊ณ ๋ถ๋ฅธ๋ค)์ผ๋ก ์ด๋ฃจ์ด์ง๋ค. C# ํ๋ก๊ทธ๋จ์ ์ต์ํ ํ๋ ์ด์์ ํด๋์ค๋ก ์ด๋ฃจ์ด์ง๋ฉด ์๋ฐฑ, ์์ฒ ๊ฐ์ ํด๋์ค๋ค๋ก ๊ตฌ์ฑ๋๊ธฐ๋ ํ๋ค.
static void Main(string[] args) //Main() ๋ฉ์๋
ํ๋ก๊ทธ๋จ์ ์ง์ ์ ์ผ๋ก์ ํ๋ก๊ทธ๋จ์ ์์ํ๋ฉด ์คํ๋๊ณ , ์ด ๋ฉ์๋๊ฐ ์ข ๋ฃ๋๋ฉด ํ๋ก๊ทธ๋จ๋ ์ข ๋ฃ๋๋ค.
๋ฐ๋ผ์ ๋ชจ๋ ํ๋ก๊ทธ๋จ์ ๋ฐ๋์ Main์ด๋ผ๋ ์ด๋ฆ์ ๊ฐ์ง ๋ฉ์๋๋ฅผ ํ๋ ๊ฐ์ง๊ณ ์์ด์ผ ํ๋ค.
(๋ฉ์๋๋ผ๋ ์ฉ์ด๋ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ๊ณ์์ ํจ์๋ฅผ ์ผ์ปซ๋ ๋ง. ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ๋ชจ๋ ๊ฒ์ด ๊ฐ์ฒด์ด๊ณ , ํจ์๋ ๊ฐ์ฒด์ ์ผ๋ถ๋ก์ ์กด์ฌํ๋ค.)
static(ํ์ ์, ์์์ด๋ ๋ป) void(๋ฐํ ํ์) Main(๋ฉ์๋ ์ด๋ฆ) (string[] args)(๋งค๊ฐ ๋ณ์)
{//Main() ๋ฉ์๋์ ๋งค๊ฐ๋ณ์๋ ์กฐ๊ธ ํน๋ณํ๋ฐ, ํ๋ก๊ทธ๋จ์ ์คํํ ๋ ์ ๋ ฅํ๋ ๋งค๊ฐ๋ณ์๊ฐ ์ ๋ ฅ๋๋ค. ์ ๋ ฅํ๋ ๊ฒ๋ค์ด ์ด args์ ์ ๋ ฅ๋๋ค.
} (์ฝ๋๋ธ๋ญ)
static์ ํ์ ์๋ก์ ๋ฉ์๋๋ ๋ณ์ ๋ฑ์ ์์ํ๋ค. C# ํ๋ก๊ทธ๋จ์ ๊ฐ ์์๋ ์ฝ๋๊ฐ ์คํ๋๋ ์์ ์ ๋น๋ก์ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋๋ ๋ฐ๋ฉด, static ํค์๋๋ก ์์๋๋ ์ฝ๋๋ ํ๋ก๊ทธ๋จ์ด ์ฒ์ ๊ตฌ๋๋ ๋๋ถํฐ ์ง์์ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋๋ค๋ ํน์ง์ด ์๋ค.
CLR์ ์ฝ๊ฒ ๋งํ๋ฉด, c#์ผ๋ก ๋ง๋ ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ํ๊ฒฝ์ด๋ค. ์ด๋ฆ์ด Common Language Runtime์ธ ์ด์ ๋, ์ด ๋ฐํ์์ด C# ๋ฟ ์๋๋ผ CLS(Common Language Specificaion) ๊ท๊ฒฉ์ ๋ฐ๋ฅด๋ ๋ชจ๋ ์ธ์ด๋ก ์์ฑ๋ ํ๋ก๊ทธ๋จ์ ์ง์ํ๊ธฐ ๋๋ฌธ์ด๋ค. CLR์ ๋จ์ํ ๊ฐ ์ธ์ด๋ก ์์ฑ๋ ํ๋ก๊ทธ๋จ์ ์คํ ๋ฟ ์๋๋ผ ์๋ก ๋ค๋ฅธ ์ธ์ด๋ก ์์ฑ๋ ์ธ์ด ์ฌ์ด์ ํธํ์ฑ์ ์ ๊ณตํ๊ธฐ๋ ํ๋ค.
ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ฉด CLR์ ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฐ ํ ํ๋ก๊ทธ๋จ์ ์ง์ ์ ์ ์ฐพ๋๋ฐ, ์ด๋ Main() ๋ฉ์๋๊ฐ static ํค์๋๋ก ์์๋์ด ์์ง ์๋ค๋ฉด CLR์ ์ง์ ์ ์ ์ฐพ์ง ๋ชปํ๋ค๋ ์๋ฌ ๋ฉ์์ง๋ฅผ ๋จ๊ธฐ๊ณ ํ๋ก๊ทธ๋จ์ ์ข ๋ฃ์ํฌ ๊ฒ์ด๋ค.
(์ค์ ๋ก ์ปดํ์ผ๋ฌ๊ฐ static์ผ๋ก ํ์ ๋ Main()๋ฉ์๋๊ฐ ์๋ ๊ฒฝ์ฐ๋ฅผ ํ๋จํ์ฌ ์ปดํ์ผ ์๋ฌ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๋ค.)
์ค๋ฅ CS5001 ํ๋ก๊ทธ๋จ์๋ ์ง์
์ ์ ์ ํฉํ ์ ์ 'Main' ๋ฉ์๋๊ฐ ํฌํจ๋์ด ์์ง ์์ต๋๋ค.
C# ์ดํ๋ฆฌ์ผ์ด์ | VB.NET ์ดํ๋ฆฌ์ผ์ด์ | C++ ์ดํ๋ฆฌ์ผ์ด์ |
.NET ๋ผ์ด๋ธ๋ฌ๋ฆฌ | ||
Common Language Runtime | ||
์ด์์ฒด์ (Windows, Linux, OS) | ||
ํ๋์จ์ด(x86/x64, ARM ...) |
C#์ผ๋ก ๋ง๋ ํ๋ก๊ทธ๋จ์ CLR ์์์ ์คํ๋๋ค.
CLR์ ์๋ฐ ๊ฐ์ ๋จธ์ ๊ณผ ๋น์ทํ ์ญํ ์ ํ๋ค.
์์ ํ์ ๊ฐ์ด CLR์ .NET ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํจ๊ป OS ์์ ์ค์น๋๋ค.
๋ค์ดํฐ๋ธ ์ฝ๋๋ก ์์ฑ๋ ํ๋ก๊ทธ๋จ๋ค์ ์ด์์ฒด์ ๊ฐ ์ง์ ์คํํ ์ ์์ง๋ง,
C# ์ปดํ์ผ๋ฌ๊ฐ ๋ง๋ค์ด๋ธ ์คํ ํ์ผ์ ํ๋์จ์ด๊ฐ ์ดํดํ ์ ์๋ ์ฝ๋๋ก ๊ตฌ์ฑ๋์ด ์๊ธฐ ๋๋ฌธ์ ์คํํ ์ ์๋ค.
<JIT(Just In Time) ์ปดํ์ผ>
1. C# ์ปดํ์ผ๋ฌ๋ C# ์์ค ์ฝ๋๋ฅผ ์ปดํ์ผํด์ IL(Intermediate Language)๋ผ๋ ์ค๊ฐ์ธ์ด๋ก ์์ฑ๋ ์คํ ํ์ผ์ ๋ง๋ ๋ค.
2. ์ฌ์ฉ์๊ฐ ์ด ํ์ผ์ ์คํ์ํค๋ฉด
3. CLR์ด ์ค๊ฐ ์ฝ๋๋ฅผ ์ฝ์ด ๋ค์ฌ ๋ค์ ํ๋์จ์ด๊ฐ ์ดํดํ ์ ์๋ ๋ค์ดํฐ๋ธ ์ฝ๋๋ก ์ปดํ์ผํ ํ ์คํ์ํจ๋ค.
JIT ์ปดํ์ผ์ด๋, ์คํ์ ํ์ํ ์ฝ๋๋ฅผ ์คํํ ๋๋ง๋ค ์ค์๊ฐ์ผ๋ก ์ปดํ์ผํด์ ์คํํ๋ค๋ ๋ป์ด๋ค.
๋๋ฒ์ฉ์ด๋ ์ปดํ์ผ ํ๋ ์ด์ : C#์ด ๋์ํ๋ ํ๊ฒฝ์ด์ ์์ง์ธ CLR์ C#๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ ์ธ์ด๋ ์ง์ํ๋๋ก ์ค๊ณ๋์๋ค. ์๋ก ๋ค๋ฅธ ์ธ์ด๋ค์ด ๋ง๋๊ธฐ ์ํ ์ง์ ์ด ๋ฐ๋ก IL์ด๋ผ๋ ์ค๊ฐ์ธ์ด์ด๊ณ , ์ด ์ธ์ด๋ก ์ฐ์ธ ์ฝ๋๋ฅผ CLR์ด ๋ค์ ์์ ์ด ์ค์น๋ ํ๋ซํผ์ ์ต์ ํ์์ผ ์ปดํ์ผํ ํ ์คํํ๋ ๊ฒ์ด๋ค.
์ด ๋ฐฉ์์ ์ฅ์ ์ ํ๋ซํผ์ ์ต์ ํ๋ ์ฝ๋๋ฅผ ๋ง๋ค์ด๋ธ๋ค๋ ๊ฒ์ด๋ฉฐ,
๋จ์ ์ ์คํ ์ ์ด๋ฃจ์ด์ง๋ ์ปดํ์ผ ๋น์ฉ์ ๋ถ๋ด์ด๋ค.
์ปดํ์ผ ๋น์ฉ ๋ถ๋ด์์ด ์ด๋ค ๊ธฐ๊ณ์์๋ ํ๊ท ์ ์ธ ์ฑ๋ฅ์ ๋ด๋ ํ๋ก๊ทธ๋จ ๋์ ,
์ปดํ์ผ ๋น์ฉ์ด ์กฐ๊ธ ๋ถ๋ด์ค๋ฌ์ธ์ง๋ผ๋ ๊ธฐ๊ณ์ ์ต์ ํ๋์ด ์ต๊ณ ์ ์ฑ๋ฅ์ ๋ด๋ ๋ฐฉ์์ธ ๊ฒ์ด๋ค.
CLR์ ๋จ์ํ C#์ด๋ ๊ธฐํ ์ธ์ด๋ค์ ๋์์ํค๋ ํ๊ฒฝ ๊ธฐ๋ฅ ์ธ์๋, ํ๋ก๊ทธ๋จ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ ๋ ์ด๋ฅผ ์ฒ๋ฆฌํ๋๋ก ๋์์ฃผ๋ ๊ธฐ๋ฅ, ์ธ์ด ๊ฐ์ ์์ ์ง์, COM๊ณผ์ ์ํธ ์ด์์ฑ ์ง์, ๊ทธ๋ฆฌ๊ณ ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ(๊ฐ๋น์ง ์ปฌ๋ ์ ) ๋ฑ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
'C# > ์ด๊ฒ์ด C#์ด๋ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
5. Parse์ ToString() ๋ฌธ์์ด์ ์ซ์๋ก, ์ซ์๋ฅผ ๋ฌธ์์ด๋ก (0) | 2022.02.07 |
---|---|
4. object ํ์, ๋ฐ์ฑ๊ณผ ์ธ๋ฐ์ฑ (0) | 2022.02.07 |
3. ๋ถํธ๊ฐ ์๋ ์ ์, ๋ถํธ๊ฐ ์๋ ์ ์, 2์ ๋ณด์๋ฒ (0) | 2022.02.06 |
3. object, ๋ฐ์ฑ๊ณผ ์ธ๋ฐ์ฑ, var (0) | 2022.02.04 |
2. C#์ ๋ฐ์ดํฐ ํ์(๊ฐ ํ์, ์ฐธ์กฐ ํ์), ๋ฉ๋ชจ๋ฆฌ(์คํ, ํ) (0) | 2022.02.04 |