我是一名新的c#开发人员,我在c#的学习曲线上。现在,我有一个非常小的项目,我应该编写自己的通用列表类来存储数据。我不允许使用任何.NET集合类。我的类应该有添加/删除列表中项目数的项目和属性的方法。由于我不允许使用任何.NET集合类,我的列表应存储在我的类中的数组中。
那么,到目前为止我做了什么?由于我对如何开始没有任何想法,我只是写下了用于了解下一步应该做什么的方法:
public class myList
{
public void addItem()
{
}
public void removeItem()
{
}
}
现在,我很遗憾,接下来该怎么做?
答案 0 :(得分:4)
我建议您了解如何在MSDN上使用数组:http://msdn.microsoft.com/en-us/library/aa288453(v=vs.71).aspx。通常,要求社区基本上为您编写代码是不好的形式,但这里有一些指示:
public myListClass(object[] items)
public void addItem(object newItem)
remoteItem(int itemIndex)
,removeItem(string itemKey)
或removeItem(object item)
还有很多其他注意事项,尤其是使用泛型来允许存储多种类型。我建议稍微阅读一下这个主题:http://msdn.microsoft.com/en-gb/library/512aeb7t.aspx
祝你好运!答案 1 :(得分:1)
您需要将“List”中的项目存储在数组(类的私有成员)中。
问题是数组具有固定大小(您不能只向其中添加项目)。所以你需要给它一些初始大小并记住它是多么“完整”。当您需要更多空间时,您需要创建一个新的,更大的数组并从原始数组中复制项目。
答案 2 :(得分:1)
这里你走了,不是特别优雅但是起点一点也没用.net收集类
public class Program
{
public static void Main()
{
myList<int> lst = new myList<int>();
lst.addItem(10);
lst.addItem(20);
lst.addItem(30);
foreach (var i in lst.getItems())
{
Console.WriteLine(i);
}
lst.removeItem(20);
foreach (var i in lst.getItems())
{
Console.WriteLine(i);
}
Console.ReadLine();
}
}
public class myList <T>
{
private T[] items = new T[0];
public void addItem(T item)
{
Array.Resize(ref items, items.Count() + 1);
items[items.Count()-1] = item;
}
public void removeItem(T item)
{
items[Array.IndexOf(items, item)] = items[items.Count() - 1];
Array.Resize(ref items, items.Count() -1);
}
public IEnumerable<T> getItems()
{
return items;
}
}
答案 3 :(得分:0)
简单的集合并不难实现,但您需要进行以下操作:
用于保存数据的数组。使用泛型,它可能类似于private T[] data = new T[10];
这当然会将大小限制为10,但这可以改变: - )
通用方法。像public T GetItem(int index){...}
另外,如果你知道怎么做,那么拥有一个索引器可能会很棒。你可以谷歌: - )
答案 4 :(得分:0)
您需要在C#中实现linked list
。
检查一下: http://csharp-algos.blogspot.com/2010/09/blog-post.html
这是在没有任何.NET库的情况下执行此操作的标准方法