對於兩者的區別都是似懂非懂的,有一次確實懂了,回頭又給忘了。因為平時也不怎么用,所以不長記性。
這邊通過舉個樹上的栗子,結構體和類的區別來說明兩個的不同,結構體屬於值類型,類屬於引用類型。
一.代表值類型的結構體
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去拿就發現變了。說白了,引用類型的變量裝的是實例的地址。
而對於結構體不一樣,我建了一個結構體,我就是一個對象,我們之間相互不影響。