类型被分为两种:值类型(整数,bool struct char 小数)和引用类型(string 数组 自定义的类,内置的类)。
值类型只需要一段单独的内存,用于存储实际的数据,(单独定义的时候放在栈中)
引用类型需要两段内存
第一段存储实际的数据,它总是位于堆中
第二段是一个引用,指向数据在堆中的存放位置
当我们使用引用类型赋值的时候,其实是赋值的引用类型的引用。
如果数组是一个值类型的数组,那么数组中直接存储值,如果是一个引用类型的数组(数组中存储的是引用类型),那么数组中存储的是引用(内存地址)。
分析下面的变量在内存中的表示方式
static void Test1()
{
int i = 34;
int j = 34;
int temp = 334;
char c = 'a';
bool b = true;
}
static void Test2()
{
int i = 34;
int j = 234;
string name = "zhangsan";
}
static void Test3()
{
string name = "zhangsan";
string name2 = "lisi";
name = name2;
name = "wangwu";
Console.WriteLine(name+":"+name2);
}
static void Test4()
{
Vector3 v = new Vector3();
v.x = 100;
v.y = 100;
v.z = 100;
Vector3 v2 = new Vector3();
v2.x = 200;
v2.y = 200;
v2.z = 200;
v2 = v;
v2.x = 300;
Console.WriteLine(v.x);
}
static void Test5()
{
Vector3[] vArray = new Vector3[]{ new Vector3(), new Vector3(), new Vector3() };
Vector3 v1 = vArray[0];
vArray[0].x = 100;
v1.x = 200;
Console.WriteLine(vArray[0].x);
}
网友评论