我正在使用C#編寫一個列表,其中將包含一個類的唯一實例。我想寫一個函數來添加這個類的單個實例並返回一個指向它的指針。C#List添加並獲取參考
public class Marble
{
public Marble(int ID)
{
// Initialize based on unique ID
}
}
public class Bag
{
private List<Marble> marbles = new List<Marble>();
public Marble Add(int ID)
{
Marble m = new Marble(ID);
marbles.Add(m);
return m;
}
}
看來這會比添加一個新的Marble和搜索匹配的ID更優化。但是,大理石會在返回時超出範圍嗎?據我所知,它只是一個動態的指針數組。如果Marble停止存在,列表的指針是否不再有效?
只要有一個被引用的'Bag'實例,該實例就應該有彈珠列表 –
'Marble m'將是一個引用類型 - 當它返回時它不會超出範圍方法。請參閱Jon Skeet的這篇文章以獲取更多信息 - http://jonskeet.uk/csharp/references。html – Tim
在C#中,引用類型(在本例中就是這樣)將始終由指針存儲。不要擔心被破壞的東西,你有垃圾收集器來做到這一點。 'return m'將返回指針,m將不會被銷燬,直到你完成它。 – thijmen321