using System;
public class A
{
public int i;
public A(int i)
{
this.i = i;
}
}
public class MainClass
{
public static void Main()
{
A a = new A(1);
Test(a);
//Test(ref a);
Console.WriteLine(a.i.ToString());
}
private static void Test(A a)
{
a = new A(2);
//a.i = 2;
}
}
/*
주소:변수명 값 할당
001 : a -> H001
002 : a -> H001 <- H002
Test(a)
Test(A a)
a = new A(2)
--------------
1
주소:변수명 값 할당
001 : a -> H001 <- H002
↑
002 : *a -> *001
Test(ref a)
Test(ref A a)
a = new A(2)
--------------
2
주소:변수명 값 할당
001 : a -> H001
002 : a -> H001.i <- 2
Test(a)
Test(A a)
a.i = 2
--------------
2
* ref는 일반적으로 value타입을 참조 형태로 쓰기 위함이다.
value타입을 전달하지 않고 객체(reference type)를 전달하여 객체내부 맴버를 변경하는 동작을 한다면....
ref로 전달하든 안하든 외형적인 차이는 없다.
*/