2011-05-10 50 views
3

我有以下代碼:添加到對象的引用到列表

Point a = new Point(3, 3); 

List<Point> points = new List<Point>(); 

points.Add(a); 

a = new Point(50,50); 

a.X += 50; 

但說我想要的代碼的最後兩行還影響到列表中的值;我會如何去做這件事? 我的猜測是將指針添加到列表中?但即使如此,我認爲「新點(50,50)」;仍然不會更新列表的值?

感謝

+0

我意識到我可以直接訪問列表中的值。但那不是我想要做的。我想創建一個調試窗口,通過將它們添加到列表中來跟蹤我「註冊」的某些變量。我想跟蹤的變量是應該在我的調試窗口中可見的圖像,因此使用調試器是沒有意義的。 – Christo 2011-05-10 15:17:22

回答

0

您將直接在列表中訪問該值:

points[0] = new Point(50, 50); 
1

不,你不需要指針。對.NET世界中的對象的引用可以被認爲基本上等同於非託管代碼世界中的指針。當你添加value types and reference types這個事實時,事情會變得有點詭計,但在這種情況下,直接在數組中修改對象或對象的引用就足夠了。

所以,你可以做以下任一操作:

points[0] = new Point(50, 50); 

points[0].X = 50; 
points[0].Y = 50; 

(雖然你處理結構,好像他們是不可改變的應該probably get into the habit,所以考慮瞭如上實例目的只要)。

+0

實際上,如果'points'是一個'List '而不是一個數組(如問題所示),你不能這樣做:'points [0] .X = 50;'因爲它給出了一個編譯錯誤:'不能修改'System.Collections.Generic.List .this [int]'的返回值,因爲它不是一個變量' – digEmAll 2011-05-10 15:20:55