值类型和引用类型区别
值类型 和引用类型的介绍
直接上代码看:
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对象已经不是同一个了。
}