我們將我們之前學的數據類型劃分成兩撥:
值類型所有的數值類型(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= "李四";
}
結果為:
[F4WSZ{KBCMLV$)4O}(RG0.jpg)

[F4WSZ{KBCMLV$)4O}(RG0.jpg)

相信通過這個形象的例子,大家應該明白值類型和引用類型的區別了吧!
新聞熱點
疑難解答