我正在使用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