值類型 和引用類型的介紹 直接上代碼看: public class Study { public static int initNo = 100; public static void Test1(int i) { i = 1; } public static void Test1(ref int ...
值類型 和引用類型的介紹
直接上代碼看:
public class Study
{
public static int initNo = 100;
public static void Test1(int i)
{
i = 1;
}
public static void Test1(ref int i)
{
i = 1;
}
public static void Test2(TestModel testModel)
{
testModel.a = 10;
testModel.b = 100;
}
public static void Test3(TestModel testModel)
{
testModel = new TestModel();
testModel.a = 10;
testModel.b = 100;
}
public static void Test()
{
int i = 0;
Test1(i);
initNo = i; // 此時這裡的i還是0,因為int是值類型。
Test1(ref i);
initNo = i; //此時這裡的i就變成了1.
//引用類型
TestModel ts = new TestModel();
ts.a = 1;
ts.b = 2;
Test2(ts); // 此時這裡的ts.a變為10,因為TestModel是引用類型,且在方法中沒有重新賦值或實例化指定對象。
ts.a = 1;
ts.b = 2;
Test3(ts); // 此時這裡的tc.a仍為1,因為TestModel雖然是引用類型,但在方法中已經重新實例化對象,跟Test函數里的ts對象已經不是同一個了。
}