2. C#μ λ°μ΄ν° νμ(κ° νμ, μ°Έμ‘° νμ), λ©λͺ¨λ¦¬(μ€ν, ν)
μΆμ²https://youtu.be/GvUMF_UM8jU
λ°μ΄ν° νμ
(1) κΈ°λ³Έ λ°μ΄ν° νμ : μ μ νμ(char/uchar, signed byte/byte, short/ushort, int/uint), λΆλ μμνμ(float, double)
(2) λ³΅ν© λ°μ΄ν° νμ : ν΄λμ€, ꡬ쑰체, μΈν°νμ΄μ€ etc
λ³μ : λ©λͺ¨λ¦¬ μͺ½μμ 보면 λ³μλ "λ°μ΄ν°λ₯Ό λ΄λ μΌμ ν¬κΈ°(λ°μ΄ν° νμμ λ°λΌ κ²°μ λ¨)μ 곡κ°"μ΄λΌλ μλ―Έλ₯Ό κ°λλ€.
λ°μ΄ν°λ₯Ό μ μ₯ν μ μλ λ©λͺ¨λ¦¬ 곡κ°(μ νκ³Ό ν¬κΈ°κ° μ ν΄μ Έ μμ΄μΌν¨), μ½λμμ μ΄λ¦(μλ³μ)μ λΆμ¬ μ¬μ©
κΈ°λ³Έ λ°μ΄ν° νμμλ κ° νμκ³Ό μ°Έμ‘° νμμ΄ μκ³ , λ³΅ν© λ°μ΄ν° νμμλ κ° νμκ³Ό μ°Έμ‘° νμμ΄ μλ€.
λ³μλ₯Ό μ μΈνλ€(μ»΄νμΌλ¬μκ²) : "μ΄ λ³μμ νμν λ©λͺ¨λ¦¬ 곡κ°μ μμ½ν΄λ¬λΌ."
μ μΈλ λ³μμλ λμ μ°μ°μλ₯Ό ν΅ν΄ λ°μ΄ν°λ₯Ό μ λ ₯ν μ μλ€.
μ μΈκ³Ό λ°μ΄ν° ν λΉμ λμμ ν μ μλ€.
μ΄κΈ°ν : μ΄κΈ°νλ, λ³μμ μ΅μ΄μ λ°μ΄ν°λ₯Ό ν λΉνλ κ²μ μλ―Ένλ€.
λ³μλ₯Ό μ μΈν ν μ무 λ°μ΄ν°λ μ λ ₯νμ§ μμΌλ©΄ Cλ C++μμλ μ°λ κΈ° λ°μ΄ν°κ° λ€μ΄κ°λ€.
C#μμλ μ΄λ° λ¬Έμ λ₯Ό λ°©μ§νλλ‘ μ΄κΈ°νλμ§ μμ λ³μκ° μμΌλ©΄ μ»΄νμΌλ¬κ° μλ¬λ₯Ό λΏμΌλ©΄μ μ€ν νμΌμ λ§λ€μ΄μ£Όμ§ μλλ€. κ·Έλ¬λ―λ‘ λ³΄ν΅ 0μΌλ‘ μ΄κΈ°νν΄μ€λ€.
λ©λͺ¨λ¦¬μμ(μ€ν vs ν)
μ€ν(Stack) (κ° νμκ³Ό κ΄λ ¨μ΄ μμ) "λ§μΉ κ²μΌλ₯Έ νλ‘κ·Έλλ¨Έμ μ± μ μμ μμ¬ μλ μ± λλ―Έμ κ°μ ꡬ쑰"
λ¨Όμ μμ μ± μΌμλ‘ μλμ μκ³ λμ€μ μμ μ± μΌμλ‘ μμ μμ΄, μ μΌ μλμ μλ μ± μ κΊΌλ΄λ €λ©΄ μμ μμ¬ μλ λͺ¨λ μ± μ κ±·μ΄λ΄λ―μ΄, μ€νμ΄ λμν¨.
- λ°μ΄ν°λ₯Ό μμ μ¬λ¦¬λ ꡬ쑰μ λ©λͺ¨λ¦¬
- λμ€μ μμΈ λ°μ΄ν°λ₯Ό λ¨Όμ μ κ±°
- μ²μμ μμΈ λ°μ΄ν°λ₯Ό λμ€μ μ κ±°
- μμΈ μμμ μμμΌλ‘ νμμλ λ°μ΄ν°λ₯Ό μλμΌλ‘ μ κ±°(μλ λ©λͺ¨λ¦¬)
ν(Heap) (μ°Έμ‘° νμκ³Ό κ΄λ ¨μ΄ μμ) "μ€νμ²λΌ μ μ₯λ λ°μ΄ν°λ₯Ό μ€μ€λ‘ μ κ±°νλ 맀컀λμ¦X,
λμ μ μ²μλΆ(CLRμ κ°λΉμ§ 컬λ ν°)λ₯Ό κ³ μ©" κ°λΉμ§ 컬λ ν°λ νλ‘κ·Έλ¨ λ€μ μ¨μ΄ λμνλ©΄μ νμ λμ΄μ μ¬μ©νμ§ μλ κ°μ²΄κ° μμΌλ©΄ κ·Έ κ°μ²΄λ₯Ό μ°λ κΈ°λ‘ κ°μ£Όνκ³ μκ±°νλ κΈ°λ₯μ νλ€.
- μμ λ‘κ² λ°μ΄ν°λ₯Ό μ μ₯ν μ μλ λ©λͺ¨λ¦¬
- λ³λͺ : μμ μ μ₯μ(Free Store)
μ€ν λ©λͺ¨λ¦¬ μμμ΄ μλλ° κ΅³μ΄ κ°λΉμ§ 컬λ ν°κ° νμν ν μμμ μ¬μ©νλ μ΄μ :
μ€νμ μμΈ λ°μ΄ν°λ€μ μμ μ΄ νμ΄λ¬λ κ³ ν₯(μ½λ λΈλ‘)μ΄ μ’ κ²°λλ μμ μ ν¨κ» μ κ±°λλ€.(μ€νμ νΉμ±μ΄μ νκ³)
μ½λλΈλ‘ μ’ κ²° μμ κ³Ό μκ΄μμ΄ λ°μ΄ν°λ₯Ό μ μ§νκ³ μΆμ λ,
μΈμ κΉμ§λΌλ νλ‘κ·Έλλ¨Έκ° μνλ€λ©΄ λ°μ΄ν°λ₯Ό μ΄λ¦΄ μ μλ λ λ€λ₯Έ λ©λͺ¨λ¦¬ μμμ CLRμ΄ μ 곡νλ κ²μ΄λ€.
ν μμ λ°μ΄ν°λ₯Ό μ¬λ €λμΌλ©΄ μ½λ λΈλ‘ μ’ κ²° μμ κ³Ό μκ΄μμ΄ λ°μ΄ν°λ μλͺ μ μ μ§νλ€.
μ΄ λ°μ΄ν°λ νλ‘κ·Έλλ¨Έκ° λ μ΄μ μ¬μ©νμ§ μλ μ°λ κΈ°κ° λμμ λ κ°λΉμ§ 컬λ ν°κ° μκ±°ν΄μ λ²λ¦°λ€.(λ©λͺ¨λ¦¬μμ μ¬λΌμ§)
μ°Έμ‘° νμμ λ³μλ νκ³Ό μ€νμ ν¨κ» μ΄μ©νλλ°, ν μμμλ λ°μ΄ν°λ₯Ό μ μ₯νκ³ μ€ν μμμλ λ°μ΄ν°κ° μ μ₯λ ν λ©λͺ¨λ¦¬μ μ£Όμλ₯Ό μ μ₯νλ€.
λ°μ΄ν°λ₯Ό μ§μ μ μ₯νλ λμ μ€μ λ°μ΄ν°κ° μ μ₯λ λ©λͺ¨λ¦¬μ μ£Όμλ₯Ό "μ°Έμ‘°"νλ€κ³ ν΄μ "μ°Έμ‘° νμ"
κ° νμμ λ³μκ° κ°μ λ΄λ λ°μ΄ν° νμμ λ§νκ³ ,
μ°Έμ‘° νμμ λ³μκ° κ° λμ κ°μ΄ μλ κ³³μ μμΉ(μ°Έμ‘°)λ₯Ό λ΄λ λ°μ΄ν° νμμ λ§νλ€.
κ° νμ(Value Type)
- λ©λͺ¨λ¦¬μ κ°μ λ΄λ λ°μ΄ν° νμ
- μ€νμ ν λΉ(μ¦, μλμΌλ‘ μ κ±°λ¨)
- κΈ°λ³Έ λ°μ΄ν° νμκ³Ό κ΅¬μ‘°μ²΄κ° μ¬κΈ°μ ν΄λΉ
- κ° νμμ λ³μλ λͺ¨λ μ€νμ μ μ₯λλ€.
μ½λ λΈλ‘ μμμ μμ±λ λͺ¨λ κ° νμμ λ³μλ€μ νλ‘κ·Έλ¨ μ€νμ΄ μ€κ΄νΈλ₯Ό λ§λλ©΄ λ©λͺ¨λ¦¬μμ μ κ±°λλ€.
{//μ½λ λΈλ‘ μμ
int a = 100;
int b = 200;
int c = 300;
}//μ½λ λΈλ‘ λ
μ μ½λμ μ μΈλ μΈ λ³μ a,b,cλ μ°¨λ‘λλ‘ μ€νμ μμλ€κ° μ½λ λΈλ‘μ΄ λλλ©΄μ μ€νμμ κ±·ν μ κ±°λλ€.
μλ μΊ‘μ³λ μμ μ½λκ° ν μ€μ© μ€νλ λλ§λ€ μ€ν λ©λͺ¨λ¦¬μ λ°μ΄ν°κ° μ μ¬λμλ€κ° κ±·νλκ°λ κ³Όμ μ 보μ¬μ€λ€.
a,b,c μμλλ‘ μ μΈμ΄κΈ°ν νλ€λ©΄
c,b,a μμλλ‘ κ±·νλκ°λ€.

μ°Έμ‘°νμ(Reference Type)
- λ©λͺ¨λ¦¬μ λ€λ₯Έ λ³μμ μ£Όμλ₯Ό λ΄λ λ°μ΄ν°νμ
- νμ ν λΉ
(κ°λΉμ§ μ½λ ν°μ μν΄ μ κ±°λ¨ : νμ μ°Έμ‘°νλ λ³μκ° μ무 κ²λ μμ λ νμ λ΄κΈ΄(μ μ₯λ) λ°μ΄ν°λ₯Ό μ°λ κΈ° μ·¨κΈ!)
- λ³΅ν© λ°μ΄ν° νμ
(κΈ°λ³Έ+볡ν©: λ©μΉκ° ν¬λ―λ‘ νμ ν λΉν΄λκ³ μ€νμμλ μ£Όμλ₯Ό κ°λ¦¬ν€κ² ν¨)κ³Ό ν΄λμ€ λ±μ΄ μ¬κΈ°μ ν΄λΉ

νμ€ μμ½:
μ€νμ λ³μμ μλͺ μ£ΌκΈ°(μ½λ λΈλ)κ° λ€ νλ©΄ μλμΌλ‘ λ°μ΄ν°λ₯Ό μ κ±°νκ³ ,
νμ λ μ΄μ λ°μ΄ν°λ₯Ό μ°Έμ‘°νλ κ³³μ΄ μμ λ κ°λΉμ§ 컬λ ν°κ° λ°μ΄ν°λ₯Ό μΉμμ£Όλ ꡬ쑰μ λ©λͺ¨λ¦¬ μμμ΄λ€.