ref ν€μλ μμ μ½κ² μ΄ν΄νκΈ°C#μ 곡λΆνλ€ λ³΄λ©΄ refλΌλ ν€μλλ₯Ό μμ£Ό λ³΄κ² λ©λλ€.
μ²μμ βμ΄κ² λ체 λμ§?β μΆμ§λ§, μ¬μ€ κ°λ
μ μμ£Ό κ°λ¨ν©λλ€.
C#μμ ν¨μλ₯Ό νΈμΆν λ, κΈ°λ³Έμ μΌλ‘λ λ³μ κ°μ΄ 볡μ¬λΌμ μ λ¬λ©λλ€.
void DoubleValue(int x)
{
x = x * 2;
}
int num = 10;
DoubleValue(num);
Console.WriteLine(num); // π μΆλ ₯: 10
num(10)μ ν¨μμ μ£Όλ©΄, ν¨μλ 볡μ¬λ³Έμ λ°μ΅λλ€.xλ₯Ό 20μΌλ‘ λ°κΏλ, μλ numμ κ·Έλλ‘ 10μ΄μμ.π λΉμ : μΉκ΅¬μκ² λ¬Έμ 볡μ¬λ³Έμ 쀬λλ, μΉκ΅¬κ° λμλ₯Ό ν΄λ λ΄ μλ³Έμ μ λ°λλ κ²κ³Ό κ°μμ.
refλ₯Ό μ°λ©΄ βμλ³Έβμ μ£Όλ κ²μ΄μ refλ₯Ό μ¨λ΄
μλ€.
void DoubleValue(ref int x)
{
x = x * 2;
}
int num = 10;
DoubleValue(ref num);
Console.WriteLine(num); // π μΆλ ₯: 20
numμ μ€μ μλ³Έμ λ°μ΅λλ€.π λΉμ : μΉκ΅¬μκ² λ΄ μλ³Έ λ¬Έμλ₯Ό μ§μ 쀬λλ, μΉκ΅¬κ° λμνλ©΄ λ΄ λ¬Έμμλ λμκ° λ¨λ κ²κ³Ό κ°μμ.
ref μ¬μ©ν λ κ·μΉrefλ₯Ό λΆμ¬μΌ νκ³ refλ₯Ό λΆμ¬μΌ ν©λλ€.refλ‘ μ λ¬νλ λ³μλ λ°λμ μ΄κΈ°νλμ΄ μμ΄μΌ ν©λλ€.ref, out, in λΉκ΅| ν€μλ | μλ―Έ | μ΄κΈ°ν νμ? | ν¨μ μμμ ν΄μΌ ν μΌ |
|---|---|---|---|
ref | μλ³Έμ μ½κ³ μμ κ°λ₯ | β νμ | μμ ν΄λ λκ³ μ ν΄λ λ¨ |
out | μλ³Έμ μμ λ§ κ°λ₯ | β νμ μμ | λ°λμ κ°μ ν λΉν΄μΌ ν¨ |
in | μλ³Έμ μ½κΈ° μ μ©μΌλ‘ μ¬μ© | β νμ | κ° λ³κ²½ λΆκ° |