π» Programming Language/C#
02. μμ±μμ μ’ λ£μ
S.Honey
2022. 4. 6. 09:12
- 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
ν€ν° : μΌμΉ
ν€ν° νμμ
λ€λ‘ : μΌμΉ
λ€λ‘ κ²μ μ