傳值 vs 傳址
2015年1月5日 星期一
常常會搞不太清楚傳值以及傳址的差異,就先來筆記一下,以免以後忘記
範例如下:
static void Main(string[] args)
{
//參考型別傳值(兩個變數位址不同)
TestClass y = new TestClass();
TestClass r1 = ChangeByVal(y);
Console.WriteLine("r1和y指向同實體:" + (r1 == y).ToString());
//參考型別傳址(兩個變數位址相同)
TestClass r2 = ChangeByRef(ref y);
Console.WriteLine("r2和y指向同實體:" + (r2 == y).ToString());
Console.ReadLine();
}
private static TestClass ChangeByVal(TestClass y)
{
y = new TestClass();
return y;
}
private static TestClass ChangeByRef(ref TestClass y)
{
y = new TestClass();
return y;
}
結果如下:
補充:這張圖可以說明兩個的不同處
0 意見:
張貼留言