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

   對於二者的區別都是似懂非懂的,有一次確實懂了,回頭又給忘了。由於平時也不怎麼用,因此不長記性。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去拿就發現變了。說白了,引用類型的變量裝的是實例的地址。

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

相關文章
相關標籤/搜索