C#中關於值類型和引用類型的區別


   對於兩者的區別都是似懂非懂的,有一次確實懂了,回頭又給忘了。因為平時也不怎么用,所以不長記性。

  這邊通過舉個樹上的栗子,結構體的區別來說明兩個的不同,結構體屬於值類型,類屬於引用類型。

一.代表值類型的結構體

SPoint s1=new SPoint(){ x=0,y=0}//這個是結構體,后面就不定義了.

SPoint s2=s1;//s1給了s2

s2.x=5;,s2.y=10;

問此時s1的x,y是多少?

我s1的值從創建就沒再動過,自然就還是0,0了。這時候這樣想是沒錯了。接着往下看類。

二.代表引用類型的類

CPoint s1=new CPoint(){x=0,y=0}

SPoint s2=s1;//s1給了s2

s2.x=5;,s2.y=10;

問此時s1的x,y是多少?

這時候要是還像剛剛那樣想就錯了,因為是引用類型,你內存里只有一個對象,在執行第二句話的時候會讓c1和c2指向同一個對象,然后你通過s2改變了這個對象,s1去拿就發現變了。說白了,引用類型的變量裝的是實例的地址。

而對於結構體不一樣,我建了一個結構體,我就是一個對象,我們之間相互不影響。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM