我试图重新创建通用列表集合。这是我的代码项添加到收集和显示所有的人:自定义集合返回第一个元素为空
public class Collect<TItem>
{
public Collect<TItem> collectObject;
public TItem firstObject;
public void Add(TItem item)
{
if (collectObject == null)
{
collectObject = new Collect<TItem>();
collectObject.firstObject = item;
}
else
{
this.collectObject.Add(item);
}
}
public void Show()
{
if (firstObject != null)
Console.WriteLine(firstObject.ToString());
if (collectObject != null)
collectObject.Show();
}
你会使用这个类是这样的:
Collect<int> test = new Collect<int>();
test.Add(2);
test.Add(10);
test.Add(30);
test.Add(3);
test.Show();
它打印所有上述值的,但第一项目始终为0
0
2
10
30
3
这是因为第一个firstObject
变量从未被分配并得到默认值,但我不能想出一个办法来修复此问题。这本书我学到这个分配在期望一个TItem
对象的构造第一firstObject
变量,但我想这样做,而无需使用一个构造这个集合(重新建立一个列表)
我知道这是完全一样的像通用列表如何工作,但我只想了解它背后的逻辑。谢谢您的帮助。
否则,很快就会让你一个'StackOverflowException'与OP的一流的设计,当你试图创建'收集'对象的无限窝。 –
LukeH
您是对的,编辑我的回答 – hungryMind
您的编辑只是将幻像值转移到输出序列的末尾,而不是开头:'{2,10,30,3,0}'而不是'{0,2,10 ,30,3}'。 – LukeH