- CLR(Common Language Runtime) => Garbage Collector ๋ฅผ ํฌํจ/ ์ดํ๋ฆฌ์ผ์ด์ ์ ์คํํ๊ธฐ ์ํ ์คํํ๊ฒฝ์ ์ ๊ณตํ๋ ๊ฒ.
- Garbage Collector => ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋์ผ๋ก ๊ด๋ฆฌ
CLR์ Garbage Collector๊ฐ ๊ฐ์ฒด๊ฐ ์๋ฉธ๋๋ ์์ ์ ํ๋จํด์ ์ข
๋ฃ์๋ฅผ ํธ์ถํ๋ค.
์ข
๋ฃ์๋ ๋ ์ ์๋ํ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข๋ค.
- ๊ธฐ๋ณธ์์ฑ์ : ๋งค๊ฐ๋ณ์๊ฐ ์์ด ์ฌ์ฉํ๋ ์์ฑ์
- ์ฌ์ฉ์ ์ง์ ์์ฑ์ : ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ์ง๋ ์์ฑ์์ด๋ฉฐ, ์ฌ์ฉ์๊ฐ ๋ณ๋๋ก ์ ์ธํด์ผํจ. ์ด๋ ์ฌ์ฉ์ ์ง์ ์์ฑ์๋ฅผ ๋ง๋ ๋ค๋ฉด ๊ธฐ๋ณธ์์ฑ์๋ ์๋์ผ๋ก ์์ฑ๋์ง ์์. ๋ฐ๋ผ์ ์ฌ์ฉ์ ์ง์ ์์ฑ์๋ฅผ ์ ์ธํ์์๋ ๊ธฐ๋ณธ์์ฑ์๋ฅผ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด ๋ณ๋๋ก ์ ์ธํด ์ฃผ์ด์ผํจ.
- ์ข
๋ฃ์ : ํด๋์ค์ ์ด๋ฆ์ ~ ๋ฅผ ๋ถํ ํํ
์์ฑ์์ ๋ฌ๋ฆฌ ํ์ ์๋ ์ฌ์ฉํ์ง ์๊ณ ๋งค๊ฐ๋ณ์๋ ์๋ค. ๋ํ ์ฌ๋ฌ๊ฐ์ ์ข ๋ฃ์๋ฅผ overloading๋ ๋ถ๊ฐ๋ฅํ๋ฉฐ, ์ง์ ํธ์ถํ ์ ์๋ค. - ๋ฌธ์ ํฌ๋งทํ
: $
C# 6.0 ์์๋ ํฌ๋งทํ ์ ํ ๋ $ ๊ธฐํธ๋ฅผ ์ด์ฉํ์ฌ ํํํ ์ ์๋๋ก ํ๊ณ ์๋ค.๋จ, $๊ธฐํธ๋ ๋ฌธ์์ด์ ๋ฐ๋ก ๋ถ์ฌ์ผ๋จ. ๊ณต๋ฐฑ์์ด. Console.WriteLine("{0} ๋ค์์ ๋ดฌ์!", name); ๋์ ์ Console.WriteLine(\$"{name}๋ ๋ค์์ ๋ดฌ์!"); ๋ฅผ ์ฌ์ฉ
C# App์ System ๊ตฌ์กฐ
C# Application |
---|
=> build => ์ปดํ์ผ๋ ILํ์ผ์ CLR์ด ์ฝ์ด๋ค์
|Common Language Runtime (CLR)|
|--------------|
=> OS, H/W ๊ฐ ์ดํดํ ์ ์๋ low ์ฝ๋๋ก ๋ณํ => ์ ์ฌ์ ์์ ๋ณํ (Just In Time(JIT) Compile)
|.Net Framework|
|--------------|
Window |
---|
HardWare |
---|
class ํด๋์ค๋ช
{
//์์ฑ์ ์ ์ธ ํ์
ํ์ ์ ํด๋์ค๋ช
(๋งค๊ฐ๋ณ์๋ชฉ๋ก){
...
}
//์ข
๋ฃ์ ์ ์ธ ํ์
~ํด๋์ค๋ช
(){
...
}
}
using System;
using System.Threading;
namespace ConDeEx
{
class Cat
{
public string name;
public string color;
public Cat()
{
name = "";
color = "";
}
public Cat(string _name, string _color)
{
name = _name;
color = _color;
}
~Cat()
{
Console.WriteLine($"{name} : ์๊ฐ");
}
public void Meow()
{
Console.WriteLine($"{name} : ์ผ์น");
}
}
class MainApp
{
static void Main(string[] args)
{
Cat a = new Cat("ํคํฐ", "ํ์์");
a.Meow();
Console.WriteLine($"{a.name} {a.color}");
Cat b = new Cat("๋ค๋ก", "๊ฒ์ ์");
b.Meow();
Console.WriteLine($"{b.name} {b.color}");
}
}
}
Output
ํคํฐ : ์ผ์น
ํคํฐ ํ์์
๋ค๋ก : ์ผ์น
๋ค๋ก ๊ฒ์ ์
'๐ป Programming Language > C#' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
06. ์ ๊ทผ์ ํ์(Access Modifier) (0) | 2022.04.06 |
---|---|
05. this, this() ์์ฑ์ (0) | 2022.04.06 |
04. ๊น์ ๋ณต์ฌ์ ์ดํด (Deep Copy) (0) | 2022.04.06 |
03. static ํ๋์ static ๋ฉ์๋ (0) | 2022.04.06 |
01. ํด๋์ค์ ๊ฐ์ฒด (0) | 2022.04.05 |