Q
究竟內部發生
-2
A
回答
2
當你
object a = i;
的整數i
是 「盒裝」(見Boxing and Unboxing (C# reference guide)),並將i
的COPY放入框中。因此,更改原始i
將不會影響a
,這就是爲什麼當您檢查它時看到它保持不變。
2
值類型是副本。
基於值類型的變量直接包含值。 將另一個值類型變量分配給另一個值,將其中包含的 值複製到另一個值類型變量。這與引用類型變量 的賦值不同,後者將引用複製到對象而不是對象本身。
0
賦值運算符是如何工作取決於是否將你複製值或參考類型。基本類型和結構體,如int,是值類型,而對象是引用類型。
當你這樣做:
int i = 5;
object a = i;
i += 1;
您的5值複製到堆棧並標記我。然後,在堆上創建對象a,並將其引用放置在堆棧上,並將i的值複製到對象a中。然後,i遞增1 - 堆中對象a的內容沒有改變。
這裏有一個不同的例子,可能使差別更加清晰:
class test{
static void Main(string[] args)
{
Value i = new Value(5);
Value a = i;
i.number += 1;
Console.WriteLine(i.number);
Console.WriteLine(a.number);
}
}
public class Value
{
public Value(int x){number = x;}
public int number { set; get; }
}
在這個例子中這兩個對象將打印作爲6號的價值,因爲現在是我的參考。如果您不確定某個對象是否是對另一個對象的引用,則始終可以使用ReferenceEquals()方法。
相關問題
- 1. Android中究竟發生了什麼rom.zip
- 2. Proc :: Background究竟發生了什麼?
- 3. 安卓「逼近」內存究竟發生了什麼
- 4. 究竟如何
- 5. 時究竟是
- 6. [NSFetchedResultsController部分]究竟是什麼?
- 7. 這部動畫究竟有何影響?
- 8. 內存頁錯誤究竟是什麼?
- 9. 動態內存究竟是什麼?
- 10. 在Git中刪除分支時究竟發生了什麼
- 11. 在rails中調用form_for時究竟發生了什麼?
- 12. 當我們使用ajax時究竟發生了什麼
- 13. 無限嵌套列表中究竟發生了什麼?
- 14. 字典/散列圖.........地球究竟發生了什麼?
- 15. windows窗體線程究竟發生了什麼?
- 16. EventMachine和Ruby線程 - 這裏究竟發生了什麼?
- 17. 需要知道什麼在此代碼究竟發生
- 18. 如果(aValue)aValue是指針,究竟發生了什麼?
- 19. 編組xml文件時究竟發生了什麼
- 20. 在telnet/SSH連接中究竟發生了什麼?
- 21. 電源故障中斷究竟發生了什麼?
- 22. 這段代碼究竟發生了什麼?
- 23. 從IE6升級到IE7 +時究竟發生了什麼?
- 24. 當我們編寫window.open()時究竟發生了什麼?
- 25. 睡眠線程時究竟發生了什麼
- 26. 這個解析函數究竟發生了什麼?
- 27. 在android中的事務失敗後究竟發生了什麼?
- 28. 怎麼看的混帳究竟發生了什麼合併
- 29. 線程崩潰時究竟發生了什麼?
- 30. 當一個任務分叉時,究竟發生了什麼?
文檔沒有回答什麼? http://msdn.microsoft.com/en-us/library/yz2be5wk.aspx – 2013-03-01 12:14:39
@ ta.speot.is是什麼讓你覺得他知道拳擊的一切? – pescolino 2013-03-01 12:30:46