C#中實值型別和參考型別簡單概述

來源:互聯網
上載者:User

概念:

1.實值型別:資料存放區在記憶體的堆棧中,從堆棧中可以快速地訪問這些資料,因此,實值型別表示實際的資料。

2.參考型別:表示指向儲存在記憶體堆中的資料的指標或引用(包括類、介面、數組和字串)。

C#中定義的實值型別包括原類型(Sbyte、Byte、Short、Ushort、Int、Uint、Long、Ulong、Char、Float、Double、Bool、Decimal)、枚舉(enum)、結構(struct)

參考型別包括:類、數組、介面、委託、字串等。

區別:

基本區別在於它們在記憶體中的儲存方式。實值型別只將值存放在記憶體中,這些實值型別都儲存在堆棧中。未經處理資料類型(如bool和int)都屬於此類型。而參考型別的記憶體單元中只存放記憶體堆中對象的地址,而對象本身放在記憶體堆中。如果引用的實值型別的值是null,則表示未引用任何對象。

堆和堆棧區別:

堆和堆棧是兩個不同的概念,在記憶體中的儲存位置也不相同,

堆一般用於儲存可變長度的資料,如字串類型;

堆棧則用於儲存固定長度的資料,如整數型別的資料int(每個int變數佔用四個位元組)。由資料存放區的位置可以得知,當把一個值變數賦給另一個值變數時,會在堆棧中儲存兩個完全相同的值;而把一個引用變數賦給另一個引用變數,則會在堆棧中儲存對同一個堆位置的兩個引用,即在堆棧中儲存的是同一個堆的地址。在進行資料操作時,對於實值型別,由於每個變數都有自己的值,因此對一個變數的操作不會影響到其它變數;對於參考型別的變數,對一個變數的資料進行操作就是對這個變數在堆中的資料進行操作,如果兩個參考型別的變數引用同一個對象,實際含義就是它們在堆棧中儲存的堆的地址相同,因此對一個變數的操作就會影響到引用同一個對象的另一個變數。

概念:

1.實值型別:資料存放區在記憶體的堆棧中,從堆棧中可以快速地訪問這些資料,因此,實值型別表示實際的資料。

2.參考型別:表示指向儲存在記憶體堆中的資料的指標或引用(包括類、介面、數組和字串)。

C#中定義的實值型別包括原類型(Sbyte、Byte、Short、Ushort、Int、Uint、Long、Ulong、Char、Float、Double、Bool、Decimal)、枚舉(enum)、結構(struct)

參考型別包括:類、數組、介面、委託、字串等。

區別:

基本區別在於它們在記憶體中的儲存方式。實值型別只將值存放在記憶體中,這些實值型別都儲存在堆棧中。未經處理資料類型(如bool和int)都屬於此類型。而參考型別的記憶體單元中只存放記憶體堆中對象的地址,而對象本身放在記憶體堆中。如果引用的實值型別的值是null,則表示未引用任何對象。

堆和堆棧區別:

堆和堆棧是兩個不同的概念,在記憶體中的儲存位置也不相同,

堆一般用於儲存可變長度的資料,如字串類型;

堆棧則用於儲存固定長度的資料,如整數型別的資料int(每個int變數佔用四個位元組)。由資料存放區的位置可以得知,當把一個值變數賦給另一個值變數時,會在堆棧中儲存兩個完全相同的值;而把一個引用變數賦給另一個引用變數,則會在堆棧中儲存對同一個堆位置的兩個引用,即在堆棧中儲存的是同一個堆的地址。在進行資料操作時,對於實值型別,由於每個變數都有自己的值,因此對一個變數的操作不會影響到其它變數;對於參考型別的變數,對一個變數的資料進行操作就是對這個變數在堆中的資料進行操作,如果兩個參考型別的變數引用同一個對象,實際含義就是它們在堆棧中儲存的堆的地址相同,因此對一個變數的操作就會影響到引用同一個對象的另一個變數。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.