對於二者的區別都是似懂非懂的,有一次確實懂了,回頭又給忘了。由於平時也不怎麼用,因此不長記性。spa
這邊經過舉個樹上的栗子,結構體和類的區別來講明兩個的不一樣,結構體屬於值類型,類屬於引用類型。對象
一.表明值類型的結構體內存
SPoint s1=new SPoint(){ x=0,y=0}//這個是結構體,後面就不定義了.變量
SPoint s2=s1;//s1給了s2引用
s2.x=5;,s2.y=10;co
問此時s1的x,y是多少?background
我s1的值從建立就沒再動過,天然就仍是0,0了。這時候這樣想是沒錯了。接着往下看類。new
二.表明引用類型的類結構體
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去拿就發現變了。說白了,引用類型的變量裝的是實例的地址。
而對於結構體不同,我建了一個結構體,我就是一個對象,咱們之間相互不影響。