藍鷗(www.lanou3g.com)是一家集產(chǎn)滞详、學(xué)、研拂共、創(chuàng)為一體的綜合性移動互聯(lián)網(wǎng)研發(fā)培訓(xùn)機構(gòu)牺弄,致力于iOS開發(fā)、Unity3D游戲開發(fā)宜狐、Android開發(fā)势告、HTML5前端開發(fā)和Web安全攻防等技術(shù)人才的培養(yǎng)蛇捌。
一、值類型和引用類型
值類型在棧中分配空間咱台,由系統(tǒng)自動分配
引用類型在堆中分配空間豁陆,由我們用new分配
String是特殊的引用類型
usingSystem;
namespaceLesson_08
{
publicclassPerson{
publicstringname;
}
classMainClass
{
publicstaticvoidMain(string[]args)
{
//值類型
//定義兩個變量
intn1;
intn2;
//給第一個變量賦值
n1=5;
//讓第二個變量等于第一個變量
n2=n1;
//改變第二個變量
n1+=2;
//把變量輸出
Console.WriteLine("N1=!"+n1);
Console.WriteLine("N2=!"+n2);
//引用類型
//定義兩個引用類型變量
Personp1;
Personp2;
//給第一個變量賦值
p1=newPerson();
p1.name="老王";
//改變第二個變量
p2=p1;
//改變第二個變量
p2.name="老張";
//把變量輸出
Console.WriteLine("p1=!"+p1.name);
Console.WriteLine("p2=!"+p2.name);
}
}
}
二、內(nèi)存中的區(qū)域:堆區(qū)(手動分配吵护,C#中具有垃圾回收機制盒音,所以不用手動釋放)和棧區(qū)(自動分配,自動釋放)
值類型的變量數(shù)據(jù)存儲在棧內(nèi)存區(qū)域
引用類型的變量數(shù)據(jù)存儲在堆內(nèi)區(qū)域
值類型變量互相賦值之后馅而,對靈感變量的任何錯做都不會互相影響祥诽,因為它們各自有獨立的存儲空間,操作的是兩個不同的數(shù)據(jù)瓮恭。
引用類型互相賦值之后雄坪,它們公用一個空間的數(shù)據(jù),會互相影響屯蹦。
值類型和引用類型課堂代碼:
usingSystem;
namespaceLesson_08
{
publicclassPerson{
publicstringname;
}
classMainClass
{
publicstaticvoidMain(string[]args)
{
//值類型
//定義兩個變量
//系統(tǒng)自動在棧中開辟空間维哈,n1和n2數(shù)據(jù)存在的空間不同
intn1;
intn2;
//給第一個變量賦值
n1=5;
//讓第二個變量等于第一個變量
n2=n1;
//改變第二個變量
n2+=2;
//把變量輸出
Console.WriteLine("N1="+n1);
Console.WriteLine("N2="+n2);
//引用類型
//定義兩個引用類型變量
Personp1;
Personp2;
//給第一個變量賦值
//當我們使用的時候才會開辟新的空間,在堆區(qū)開辟了空間登澜,p1和p2使用一個數(shù)據(jù)空間
p1=newPerson();
p1.name="老王";
//改變第二個變量
p2=p1;
//改變第二個變量
p2.name="老張";
//把變量輸出
Console.WriteLine("p1="+p1.name);
Console.WriteLine("p2="+p2.name);
}
}
}