refμ out ν€μλ
refμ out ν€μλλ μΈμλ‘ λκΈ΄ λ³μλ₯Ό λ©μλ λ΄λΆμμ μ°Έμ‘° ννλ‘ μ¬μ©νλ€λ μ μμ λμΌνλ€.
- μμ±(Property)μ λ³μκ° μλλ―λ‘ μ λ¬ν μ μλ€.
using System;
namespace Test
{
class Program
{
static void Main(string[] args)
{
int i = 0;
foo(ref i);
Console.WriteLine(i);
int j;
bar(out j);
Console.WriteLine(j);
}
static void foo(ref int a)
{
a = 3;
}
static void bar(out int a)
{
a = 15;
}
}
}
// 3
// 15
κ·Έλ¬λ λ ν€μλλ μ°¨μ΄μ μ μλ€.
- refλ μΈμλ‘ μ λ¬νκΈ° μ μ λ°λμ λ³μλ₯Ό μ΄κΈ°νλ₯Ό ν΄μΌ νμ§λ§, outμ μ΄κΈ°νλ₯Ό νμ§ μμλ λλ€.
- outμ λ©μλκ° λ°νλκΈ° μ μ λ°λμ κ°μ ν λΉν΄μΌ νμ§λ§, refλ κ°μ λ³κ²½νμ§ μμλ λλ€.
μ¦, refλ μΈμλ‘ λ°μ λ³μλ₯Ό μμ νκ±°λ λ³΅μ¬ μμ΄ μ¬μ©ν λ μ μ©νκ³ outμ λ©μλ μμμ λ§λ€μ΄μ§ μ΄λ€ κ°μ λ³μμ λ£μ΄ λ°ννλ λ° μ¬μ©νλ©΄ μ μ©νλ€.
using System;
namespace Test
{
class Program
{
static void Main(string[] args)
{
// int i = 0;
// μ€λ₯ λ°μ
int i;
foo(ref i);
Console.WriteLine(i);
int j;
bar(out j);
Console.WriteLine(j);
}
static void foo(ref int a)
{
a = 3;
}
static void bar(out int a)
{
// a = 15;
// μ€λ₯ λ°μ
}
}
}