C 老生常談的 值型別與引用型別

2021-09-08 10:24:07 字數 899 閱讀 5354

說起值型別和引用型別,大家都知道這麼個事,很多時候我們會拿string做值型別來做比較,但實際上string雖然是值型別,卻表現的有點特別

看下面的乙個例子:

話說string是引用型別,所以str1和str2都指向同一塊記憶體位址,當修改了str1的值,按理str2取值時也會受到影響!

但實際上我們會發現,修改str1值之後,str2的值並沒有受到影響

這是因為.net framework對string做了特殊處理,當string的內容改變,.net會重新給它分配一塊記憶體空間存放新的字串內容,而不是在老的位址上進行改變

所以 str1=「ccc」時(改變str1的值),.net申請了一塊新記憶體存放 「cccc」,然後返回乙個位址給str1,所以對str1的改變不影響str2

對於其它的引用型別,我們可以看到它們改變的都是同一塊記憶體位址

請看下面的例子:

引用型別有五種:類(class) ,物件(object),字串(string) ,委託(delegate),介面(inte***ce)

除引用型別之外的 ,整形(int),boo,byte,struct,enum

值型別的把值存放在他們自身所分配到的記憶體中,引用型別只是包含指向記憶體位址的引用(指標)

老生常談 與equals的區別

最近在研究string,看到面試題有一題是 與equals的區別的題目。關於 與equals的區別相信大家很熟悉了,包括我也看到也是腦中一閃而過,比較的是位址,equals比較的是內容。真是這樣嗎?或者說能具體或深入的解釋下嗎?如果被面試官這樣問,會如何作答呢?由於最近看了string和object...

老生常談c 中的靜態成員

有時候需要類的一些成員與類本身相關聯,而不是與類的每個物件相關聯。比如類的所有物件都要共享的變數,這個時候我們就要用到類的靜態成員。宣告靜態成員的方法是使用static關鍵字。static成員可以是public也可以是private的。例如,定義乙個類表示銀行的賬戶記錄 class account ...

C 值型別與引用型別

1.主要內容 型別的基本概念 值型別深入 引用型別深入 值型別與引用型別的比較及應用 2.基本概念 c 中,變數是值還是引用僅取決於其資料型別。c 的基本資料型別都以平台無關的方式來定義,c 的預定義型別並沒有內置於語言中,而是內置於.net framework中。net使用通用型別系統 cts 定...