国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

淺談值類型與引用類型的區別

2019-11-17 03:03:38
字體:
來源:轉載
供稿:網友

淺談值類型與引用類型的區別

1、值類型與引用類型

我們將我們之前學的數據類型劃分成兩撥:

值類型所有的數值類型(longint short byte ulong uint ushort sbyte decimal double float)、bool、char、枚舉、結構

引用類型

string字符串、數組、類

劃分依據: 他們在內存中存儲的結構不同

2、值類型與引用類型的異同點

a. 相同點:無論是值類型的變量還是引用類型的變量, 變量始終是開辟在棧空間中的.b. 不同點:值類型的變量真實的值 直接存儲在 值類型的變量之中.引用類型的真實的值(對象) 是存儲在 堆空間之中. 引用類型的變量之中存儲的是 真實的值(對象)在空間中的地址.

3、值類型與引用類型的賦值效果不同

在這里強調一下: 無論是什么類型的變量之間相互賦值, 都是將源變量的值拷貝1份,將這個副本賦值給目標變量.

a. 值類型的變量在相互賦值的時候,是對1個變量的值進行修改,不會影響另外1個變量的值.b. 引用類型的變量之間相互賦值,兩個引用類型的變量實際上指向了同1個堆空間中的地址(對象),對1個變量進行修改 會影響另外的1個變量

特別注意的是:string是一種特殊的引用類型,string在內存中存儲時按照引用類型的存儲. 但是在賦值的時候不是這樣的,是由于字串符的恒定性造成的。

4、通過代碼的運用更深入地了解值類型和引用類型的區別

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= "李四";

}

結果為:

5、下面給一張圖講解一下上面的案例

相信通過這個形象的例子,大家應該明白值類型和引用類型的區別了吧!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 张家川| 揭阳市| 枝江市| 天全县| 通州市| 太原市| 扶风县| 高淳县| 天峨县| 永胜县| 民和| 长治县| 潜山县| 太康县| 彭水| 伊宁市| 于田县| 天津市| 建水县| 蒙山县| 贡嘎县| 五大连池市| 定边县| 泽州县| 丹棱县| 镇赉县| 商都县| 龙州县| 武山县| 遂溪县| 日喀则市| 延长县| 金沙县| 淳化县| 从化市| 禹州市| 八宿县| 海安县| 集贤县| 建瓯市| 岑溪市|