C# 在从IEnumerable继承的泛型类中实现Add方法
有如下的课程C# 在从IEnumerable继承的泛型类中实现Add方法,c#,oop,generics,inheritance,ienumerable,C#,Oop,Generics,Inheritance,Ienumerable,有如下的课程 public class MyGeneric<T> : IEnumerable { public System.Collections.IEnumerator GetEnumerator() { return this.GetEnumerator(); } public void Add(T item) { this.Add(item); } public IEnumerable
public class MyGeneric<T> : IEnumerable
{
public System.Collections.IEnumerator GetEnumerator()
{
return this.GetEnumerator();
}
public void Add(T item)
{
this.Add(item);
}
public IEnumerable<T> GetNullItems()
{
foreach (T item in this)
{
if (item != null)
{
yield return item;
}
}
}
}
问题是,当我添加1时,调用add
方法,在add
方法中调用代码片段this.add(项)
表示再次调用Add
,而我的意思是将项目添加到集合中
如果我删除Add
方法,我会得到一个“MyClass.MyGeneric”不包含“Add”错误的定义
我很困惑,我该如何添加项目 当然可以
public void Add(T item)
{
this.Add(item);
}
这里有一个调用自身的方法,该方法依次调用自身,后者依次调用自身,直到耗尽堆栈
您可能希望添加类型为
List
的字段,并让您的add
方法调用\u List.add(项)代码>。或者将新项目写入磁盘,或者将其存储在任何您想要的地方,但列表将是最常用的存储位置。思考您想要添加项目的位置和解决方案将出现您想要将其添加到哪个集合?您的示例中没有集合。我希望类对象本身是一个集合,如果我写错了类,请更正我。您的类当前没有任何字段。您希望它在哪里存储信息?我希望我的类是一个列表之类的,我认为从IEnumerable继承就足够了。有人甚至可能会说这个问题非常适合StackOverflow;-)
public void Add(T item)
{
this.Add(item);
}