본문 바로가기

Language/C#

ref, out, Tryparse Keyword

ref


Call by reference 효과를 주게됨

(대신 반드시 값이 할당되어 있어야 한다.)



static void Main(string[] args)
{
    Vector v1;
    v1.X = 5;
    v1.Y = 10;
 
    Change(ref v1);
    Console.WriteLine(v1);
 
}
static void Change(ref Vector vt)
{
    vt.X = 7;
    vt.Y = 11;
}
//결과 : x : 7 y : 11
//ref키워드를 사용안한 결과 : x : 5 y : 10



out


ref키워드와 동일하게 Call by reference효과를 주며 반드시 값을 할당해야하는 강제성을 주게 된다.

(보통 해당 function의 결과값을 인자로 넣고 받고 싶을때, 결과값을 강제하고 싶을때 사용,

ref와 다르게 할당이 안되어 있는 객체를 넣어도 상관이 없다.)



static void Add(int a, int b, int result)
{
    result = a + b;
}//out키워드가 붙은 객체에 반드시 값을 할당해 주어야 한다.

static void Minus(int a, int b, int result)
{
    int c = a + b;
}//error : out 키워드가 붙은 객체에 값을 할당하지 않음

static void Main(string[] args)
{
    int a = 1;
    int b = 2;
    int result;
    
    Add(a, b, result);
}
//결과 : result = 3



TryParse


값 변환이 성공했는지 여부를 true / false 로 리턴하고 성공했으면 out지정자로 지정된 result 변수에 값 반환



static void Main(string[] args)
{
    int n;
    if(int.TryParse("123456",out n) == true)
    {
        Console.WriteLine(n); // 결과 : 1234567    
    }
    int nn;
    if(int.TryParse("가나다", out nn) == true) // 숫자가 아니므로 false
    {
        Console.WriteLine(nn); //false로 인해 실행 안됨.
    }
}


'Language > C#' 카테고리의 다른 글

Mono / Nuget / .NET Framework / .NET Core / Xamarin / Manifest  (0) 2019.02.27
Dictionary  (0) 2019.02.27
is, as Keyworkd  (0) 2019.02.26
C#에서의 Get / Set  (0) 2019.02.25
GC / SGen  (0) 2019.02.25