π Boxing, Unboxing
- λ¨Όμ
- νκ³Ό μ€νμ λν΄ μμμΌ νλ€.
- κ°κ³Ό μ°Έμ‘°μ λν΄ μμμΌ νλ€.
- κ° νμμ μ€νμ μ μ₯λλ©°, μ°Έμ‘° νμμ νμ μ μ₯λ©λλ€.
- κ° νμμ νμ μ μ₯λλλ‘ νλ €λ©΄ λ°μ±μ΄ νμνλ€.
π« Q
Object
νμ μValue
νμ μ λμ νλ©΄Value
λ₯Ό λ νΌλ°μ€ νμ μΌλ‘Boxing
Stack
μ μλValue
λ₯ΌHeap
μΌλ‘ λ³΅μ¬ ν μ£Όμκ°μ ν λΉ
λ°μ±κ³Ό μΈλ°μ±
μ λν΄ μ€λͺ ν΄ μ£ΌμΈμ.- κ°λΉμ§μ λνμ¬
π« Boxing, Unboxing
𫧠λ°μ±(Boxing)
κ° νμμ μΈμ€ν΄μ€ -> μ°Έμ‘° νμμΌλ‘ λ³ν.
1
2
int n = 4615; // κ°
object someObject = n; //κ° -> μ°Έμ‘°
Stackμ μλ κ° νμ
μ κ°μ²΄λ₯Ό HeapμΌλ‘ μ΄λν λ, 볡μ¬κ° νλ² μΌμ΄λλ€.
Heapμ 볡μ¬λ μ΄ μμμ μ°Έμ‘° νμ
μ΄ κ°λ¦¬ν€κ² λλ μΌμ μννλ€.
μ΄λ κ² λ°μ± λ κ° νμμ λ©λͺ¨λ¦¬ 곡κ°μ λ λ§μ΄ μ¬μ©νκ³ μ±λ₯μ μν₯μ λ―ΈμΉ μ μμΌλ―λ‘ λΆνμν λ°μ±μ νΌν΄μΌλλ€.
𫧠μΈλ°μ±(Unboxing)
λ°μ±λ κ° -> μλμ κ° νμμΌλ‘ λ³ν.
1
int n = (int)someObject; //μ°Έμ‘° -> κ°
Heapμ μλ λ°μ΄ν°λ₯Ό StackμΌλ‘ 볡μ¬.
C# 2.0λΆν°λ μ λ€λ¦(Generic)μ μ¬μ©νμ¬ λ°μ±κ³Ό μΈλ°μ±μ νΌν μ μλ λ°©λ²μ μ 곡νλ―λ‘ μ λ€λ¦μ νμ©νλ κ²μ΄ μ’λ€.
μ΄ κΈ°μ¬λ μ μκΆμμ CC BY 4.0 λΌμ΄μΌμ€λ₯Ό λ°λ¦
λλ€.