readonly vs. const
Β |
readonly |
const |
κ° μ μ |
λ°νμ |
μ»΄νμΌ νμ |
λ©λͺ¨λ¦¬ ν λΉ μμΉ |
Heap |
Stack(static ν€μλλ‘ Heapμ μ μ₯ κ°λ₯) |
μ κ·Ό μλ |
λλ¦Ό |
λΉ λ¦ |
μ΄κΈ°ν |
μμ±μ λ¨κ³μμ ν λΉ |
λ³μ μ μΈκ³Ό λμμ κ° ν λΉ |
μλ£ν |
λͺ¨λ μλ£ν |
λ΄μ₯ μλ£ν |
μ μ νλ |
static ν€μλ μ¬μ© κ°λ₯ |
μ μΈκ³Ό λμμ μ μ νλμ μλ ν λΉ |
readonlyλ₯Ό μ°λ μ΄μ
- constλ μ»΄νμΌ μμ
- λ³μ κ°μ΄ λ°λλ κ²½μ° μ°Έμ‘° λ°κ±°λ μν₯μ λ°λ νλ‘μ νΈ λͺ¨λ λ€μ μ»΄νμΌ
- readonlyλ μμ± μ μ μΈνμ§ μμλ μμ±μμμ μ΄κΈ°ν νμ¬ μ¬μ©
- μ€μ μ¬μ©νλ λ¨κ³μμ λ³μμ κ°μ κ°μ Έμ¬ μ μμ
- μμκ° λ³κ²½ μ μ¬μ»΄νμΌμ νμ§ μμ
- μ¬μ©νλ μμ±μ λ¨μμ λ³μμ κ°μ ν λΉν΄μ μ¬μ© ν μ μμ
μ¬μ© μμ
// case 1:
class TEST
{
public readonly string test = "start";
// constructor μμμ μ΄κΈ°ν κ°λ₯
public TEST()
{
test = "abc";
}
public TEST(string s1)
{
test = s1;
}
}
// case 2:
// readonlyλ μ§μ λ³μλ‘ μ¬μ© λΆκ°
static void Main(string [] args)
{
const int abc = 3; // ok
readonly int def = 6; // error
}
μΆμ²