【发布时间】:2015-12-08 11:24:25
【问题描述】:
我创建了一个 CustomList 类,其中包含一些方法,例如 Add()、Set() 和 RemoveAt()。此 CustomList 类旨在模仿 List 类的行为,而无需实际使用它。 在调试我的程序时,我注意到当我输入要删除的字符串的索引时,我的代码成功地删除了该字符串。但是当我调用 print 方法时,它会双重打印数组中的最后一个字符串。我假设错误在 RemoveAt() 而不是 Print() 中,因为 Print() 在未调用 RemoveAt() 时工作得很好。我想知道是否有人能指出我正确的方向。
class CustomList
{
private int count;
private String[] data;
public int Count
{
get { return count; }
set { value = count; }
}
public CustomList(int arrayNum)
{
data = new String[arrayNum];
}
public CustomList(): this(4)
{
}
public void Add (String item)
{
if (count > data.Length)
{
String[] temp = new String[count * 2];
for (int i = 0; i < data.Length; i++)
{
temp[i] = data[i];
}
data = temp;
}
data[count] = item;
count++;
}
public int IndexOf (String item)
{
for (int i = 0; i < data.Length; i++)
{
if (data[i].Contains(item))
{
return i;
}
}
return -1;
}
public bool Contains (String item)
{
if (IndexOf(item) == -1)
{
return false;
}
return true;
}
public void RemoveAt(int index)
{
if (index < count && index >= 0)
{
Array.Copy(data, index + 1, data, index, Count - (index + 1));
count--;
}
}
public bool Remove(String item)
{
if (data.Contains(item))
{
int index = Array.IndexOf(data, item);
RemoveAt(index);
return true;
}
return false;
}
public void Print()
{
for (int i = 0; i < count; i++)
{
Console.WriteLine(data[i]);
}
}
【问题讨论】:
-
模仿只需实现适当的接口(参见IList);
-
您的
Print没有工作正常。尝试将四个项目添加到CustomList(不设置 ctor 中的容量),然后打印它。 -
@germi 总是提示用户输入列表的大小。我对你的建议有点困惑。
-
@corinne 你看到我的回答了吗?我想我可以确切地看到出了什么问题。
-
@GaryMcGill 是的,我看到了你的答案。为了清楚起见,您是在建议我将
标签: c# arrays arraylist indexof