引用類型的值
1. 值類型和引用類型的區別
值類型就是現金,要用直接用;引用類型是存摺,要用還得先去銀行取現。
聲明一個值類型變數,編譯器會在棧上分配一個空間,這個空間對應著該值類型變數,空間里存儲的就是該變數的值。引用類型的實例分配在堆上,新建一個引用類型實例,得到的變數值對應的是該實例的內存分配地址,這就像您的銀行賬號一樣。
具體哪些類型是值類型哪些是引用類型,大家翻翻書,背一背就好了,不過我想,做過一段時間的開發,即使您背不了書上教條的定義,也不會把值類型和引用類型搞混的。
2. 什麼屬於值類型什麼屬於引用類型
值類型的變數直接包含他們的數據,而引用類型的變數存儲,引用類型存儲對他們的回數據的答引用,後者稱為對象。
3. c#中引用類型和值類型分別有哪些
C#的引用類型包括:數組、委託、介面、object、字元串、用戶定義的類。
C#的值類型包括:數值類型、結構體、bool型、枚舉、可空類型、用戶定義的結構體。
數組的元素,不管是引用類型還是值類型,都存儲在託管堆上。引用類型在棧中存儲一個引用,其實際的存儲位置位於託管堆。為了方便,本文簡稱引用類型部署在託管推上。
值類型總是分配在它聲明的地方:作為欄位時,跟隨其所屬的變數(實例)存儲;作為局部變數時,存儲在棧上。值類型在內存管理方面具有更好的效率,並且不支持多態,適合用作存儲數據的載體;引用類型支持多態,適合用於定義應用程序的行為。
(3)引用類型的值擴展閱讀
成員變數值類型的默認值:
int類型的默認值是0
String類型的默認值是null
double類型的默認值是0.0d
Integer類型的默認值是null
Long類型的默認值是null
long類型的默認值是0L
float類型的默認值是0.0f
char類型的默認值是u0000
byte類型的默認值是(byte)0
short類型的默認值是(short)0
4. c#什麼是值類型什麼是引用類型
一、數據類型在它自己的內存分配中存儲數據,則該數據類型就是「值類型」。值類型包括:
1、所有數字數據類型
2、Boolean、Char和Date
3、所有結構,即使其成員是引用類型
4、枚舉,因為其基礎類型總是SByte、Short、Integer、Long、Byte、UShort、UInteger或ULong
二、「引用類型」包含指向存儲數據的其他內存位置的指針。引用類型包括:
1、String
2、所有數組,即使其元素是值類型
3、類類型,如Form
4、委託
(4)引用類型的值擴展閱讀
值類型和引用類型使用注意事項
值類型的變數保存到內存的線程的堆棧中;而引用類型的變數會保存到託管堆中,其中這里說的託管堆又可以分為GC堆、LOH堆。其中GC堆、LOH堆是根據創建的對象的大小來分配到不同的堆中的。
判斷的平衡點是這個對象是否超過85000位元組,如果小於85000位元組,則系統把對象保存到GC堆中;如果大於或者等於85000位元組,則系統保存到LOH堆中(一般LOH創建的對象是數組)。所以託管堆就是指GC堆和LOH堆的集合。
5. 什麼是引用類型和值類型,有什麼區別
值類型就是現金,要用直接用;引用類型是存摺,要用還得先去銀行取現。
聲明一個值類型變數,編譯器會在棧上分配一個空間,這個空間對應著該值類型變數,空間里存儲的就是該變數的值。引用類型的實例分配在堆上,新建一個引用類型實例,得到的變數值對應的是該實例的內存分配地址,這就像您的銀行賬號一樣。
具體哪些類型是值類型哪些是引用類型,大家翻翻書,背一背就好了,不過我想,做過一段時間的開發,即使您背不了書上教條的定義,也不會把值類型和引用類型搞混的。
6. 「值類型」和「引用類型」的區別是什麼
1, 值類型保存抄的是具體的值。
例如
int a = 1;
int b = a;
b++;
這時b為2,a仍然是1
,2, 引用類型保存的是值的地址。
例如有個類型是 User
User u1 = new User(){ Name = "張三" };
User u2 = u1;
u2.Name = "李四";
這時 u2 和 u1 的名字都為李四,因為 u2=u1的時候,u1和u2將指向同一個內存中的地址。改變u2的等於改變了u1,
7. 關於引用類型和值類型
這兩個並不矛盾啊
正因為 一個變數有兩個相同的名字,shuzi 和 i 都表示同一個變數 所以在函數內 你修改了i的值 就等同於修改了shuzi的值
只不過當jiajian函數執行完畢以後 名字 i 就不存在了(因為他的作用域就是在加減函數裡面)
因此這個變數就還是只有su一個名字,i 這個名字消失了
8. c#中值類型和引用類型的區別
1、速度上的區別
值類型存取速度快,引用類型存取速度慢。
2、用途上的區別
值類型表示實際數據,引用類型表示指向存儲在內存堆中的數據的指針或引用。
3、來源上的區別
值類型繼承自System.ValueType,引用類型繼承自System.Object
4、位置上的區別
值類型的數據存儲在內存的棧中,引用類型的數據存儲在內存的堆中,而內存單元中只存放堆中對象的地址。
5、類型上的區別
值類型的變數直接存放實際的數據,而引用類型的變數存放的則是數據的地址,即對象的引用。
6、保存位置上的區別
值類型變數直接把變數的值保存在堆棧中,引用類型的變數把實際數據的地址保存在堆棧中,而實際數據則保存在堆中。
例如:
字元串類型,而堆棧則用於存儲固定長度的數據,如整型類型的數據int(每個int變數佔用四個位元組)。
由數據存儲的位置可以得知,當把一個值變數賦給另一個值變數時,會在堆棧中保存兩個完全相同的值;而把一個引用變數賦給另一個引用變數,則會在堆棧中保存對同一個堆位置的兩個引用,即在堆棧中保存的是同一個堆的地址。
在進行數據操作時,對於值類型,由於每個變數都有自己的值,因此對一個變數的操作不會影響到其它變數;對於引用類型的變數,對一個變數的數據進行操作就是對這個變數在堆中的數據進行操作,
如果兩個引用類型的變數引用同一個對象,實際含義就是它們在堆棧中保存的堆的地址相同,因此對一個變數的操作就會影響到引用同一個對象的另一個變數。