有人可以請解釋一下,值類型和引用類型只是c#.net的概念,或者它適用於其他各種語言,如c,C++,java。 感謝值類型和參考類型只是c#概念?
-2
A
回答
2
在Java中,從Does Java make distinction between value type and reference type報價:
在Java中,所有的對象和枚舉是引用類型,而所有原始數據是值類型。兩者之間的區別與C#中的複製語義相同,但您無法在Java中定義新的值類型。
在C和C++中,沒有值類型和引用類型的概念。 C++有引用但這與引用類型不同。
1
它適用於許多編程語言。
通常,值類型可以將存儲在堆棧中(see this Eric Lippert's article for C# details)和堆中的引用類型。或者,至少,值類型是在分配給新變量或作爲參數傳遞給方法時創建自身副本的值類型。
例如:
// In C# a struct is a value type
public struct A
{
public string Text;
public A(string text)
{
Text = text;
}
}
A a = new A("hello world");
// This creates a copy, instead of assigning the same "object" to a new reference
A a1 = a;
看看Wikipedia說:
一些編程語言,尤其是C#,d,和斯威夫特 - 使用術語 值類型來引用類型的對象其中賦值具有 深層複製語義(與參考類型相反,其具有淺層
而且還說:
其他編程語言,例如,Java,不正式定義的術語 值類型,但他們的從業者非正式地用這個詞來指代 與深拷貝語義類型(如Java的基本類型)。 複製語義
另一個有趣的Q & A可以stack and heap in V8 (JavaScript)。
相關問題
- 1. C#參考類型和「可變」概念之間的區別?
- 2. 值類型和參考類型
- 3. 值類型和參考類型
- 4. oops概念的類型
- 5. C中的類型聲明(概念)
- 6. 找不到概念模型類型
- 7. 嵌套類型的類的概念
- 8. Objective-C NSString參考類型
- 9. 獲取的值類型C#參考
- 10. C++類:概念類Doppelganger:LNK2005
- 11. Type.InvokeMember和參考類型
- 12. 參考和值類型場景
- 13. 參考和輸出值類型變量
- 14. C語言中是否存在類型擦除概念?
- 15. C++概念lite和類型別名聲明
- 16. Objective-C是否具有像C#這樣的值/引用類型的概念?
- 17. 泛型類的概念問題
- 18. Rust中有POD類型的概念嗎?
- 19. 概念類型中的成員數
- 20. 如何從概念中檢索類型?
- 21. 概念類型找不到對應的對象層類型
- 22. Linq2SQL參考類型
- 23. JAVA:子類型和繼承的概念是一樣的嗎?
- 24. 概念端類型'Converter.Session'中成員'SessionId'的類型'Edm.Int32'與類型'系統
- 25. 「類型」,「實例」,「類」和「對象」概念之間的區別
- 26. c-casting類型與c-casting類型的參考
- 27. 類概念SAPUI5
- 28. 概念類圖
- 29. 類概念
- 30. C#平臺,調用,參考和值類型
這是一種通用的概念,它不會忽略處理器的工作方式。你並不總是不得不說出這些話,因爲語言設計師爲你做出了選擇。在Java中,除了基元以外,所有東西都是引用類型,這是使用垃圾回收器的語言的自然選擇。在C和C++中,所有東西都是值類型,具有顯式語法來管理引用和複製值。在C#中,您可以選擇。你選擇的是非常重要的,你不能忽略聲明或代碼中的差異。 –