我们将我们之前学的数据类型划分成两拨:
值类型所有的数值类型(longint short byte ulong uint ushort sbyte decimal double float)、bool、char、枚举、结构
引用类型
string字符串、数组、类
划分依据: 他们在内存中存储的结构不同
a. 相同点:无论是值类型的变量还是引用类型的变量, 变量始终是开辟在栈空间中的.b. 不同点:值类型的变量真实的值 直接存储在 值类型的变量之中.引用类型的真实的值(对象) 是存储在 堆空间之中. 引用类型的变量之中存储的是 真实的值(对象)在空间中的地址.
在这里强调一下: 无论是什么类型的变量之间相互赋值, 都是将源变量的值拷贝1份,将这个副本赋值给目标变量.
a. 值类型的变量在相互赋值的时候,是对1个变量的值进行修改,不会影响另外1个变量的值.b. 引用类型的变量之间相互赋值,两个引用类型的变量实际上指向了同1个堆空间中的地址(对象),对1个变量进行修改 会影响另外的1个变量
特别注意的是:string是一种特殊的引用类型,string在内存中存储时按照引用类型的存储. 但是在赋值的时候不是这样的,是由于字串符的恒定性造成的。
int temp;
temp = 100;
Console.WriteLine("修改前,temp=" + temp);
ChangeValue(temp);
Console.WriteLine("修改后,temp=" + temp);
Student stu = newStudent() { Name = "张三", Age =30 };
Console.WriteLine("修改前:" + stu.Name + " :" +stu.Age);
ChangeValue(stu);
Console.WriteLine("修改后:" + stu.Name + " :" +stu.Age);
Console.ReadKey();
static voidChangeValue(int num)
{
num = 200;
}
static voidChangeValue(Student stu)
{
stu.Age = 40;
stu.Name= "李四";
}
结果为:
相信通过这个形象的例子,大家应该明白值类型和引用类型的区别了吧!
新闻热点
疑难解答