.Add /。删除属性不起作用C#

时间:2018-01-12 18:13:23

标签: c# arrays list

我遇到了很多麻烦,理解并实现了学校项目中的列表/数组列表。我们被要求使用一种方法来执行基本任务(例如使用给我们的方法添加字符串(" Bag")"插入""删除&# 34;而不是Lists的内置属性,我理解为"。添加"和#34;。删除")但它不起作用,主要是因为我没有了解数据结构。我可以打电话给#34; BoundedBag"方法中的b和c但是这将是混乱的,如果创建了List的新实例,我将无法重新使用代码。我对一项看似基本的任务感到非常难过。 如果有人对我如何处理这个问题有任何提示,那将非常有帮助。 感谢

 namespace A111111
 {
    class Program
   {
    static void Main(string[] args)
    {
        BoundedBag<string> b = new BoundedBag<string>("ShoppingList", 10);
        b.insert("apple");
        b.insert("eggs");
        b.insert("milk");
        Console.WriteLine(b);
        //b.saveBag("C:/test/mybag.txt");
        BoundedBag<string> c = new BoundedBag<string>("ShoppingList", 10);
        //c.loadBag("C/test/mybag.txt");
        Console.WriteLine(c.remove());
        Console.WriteLine(c.remove());
        Console.WriteLine(c.remove());

    }


}
public interface Bag<T> where T : class
{
    T remove();
    void insert(T item);
    string getName();
    bool isEmpty();
}
public class BoundedBag<T> : Bag<T> where T : class
{
    private string bagName; // the name of the bag
    private int size; // max size of the bag
    private int lastIndex;
    private T[] items;
    private Random rnd;

    public static int Length { get; private set; }

    public BoundedBag(string name, int size)
    {
        bagName = name;
        this.size = size;
        rnd = new Random();
        items = new T[size];
    }
    public string getName()
    {
        return bagName;
    }
    public bool isEmpty()
    {
        return lastIndex == -1;
    }
    public bool isFull()
    {


        if (items.Length  >= size)
        {
            return true;
        }
        else { return false;}
    }

    /*public T remove()
    {
        // fill in the code as directed below:
        // using rnd object remove a random item from items
        // and returns it
        // throw EmptyBagException if necessary
        items.Remove(rnd);
    }*/
    public void insert(T item)
    {
        // fill in the code as directed below:
        // insert item into items container
        // throws FullBagException if necessary
        items.Add(bagName,size);
    }


}

}

修改

通过属性回应您的响应我的意思是建立在数组方法中(我的错误)。我现在评论了remove方法,所以我可以专注于插入方法。加载/保存文件不是我主要关注的问题,因为我试图一步一步地采取它。由于我不了解这个程序的基本结构,我试图做最基本的事情,即将内容添加到&#34; bag&#34;。在这一点上,我理解&#34; BoundedBag&#34;是一个孩子(?)&#34; Bag&#34;和&lt; T>是一个类型参数。我不明白的是我如何插入一个项目&lt;字符串&gt;让我们说,在&#34;插入&#34;中的BoundedBag对象。根据需要的方法。我试过了

 items.Add(bagName,size);

以及

  BoundedBag<T>.add;

所以在这一点上,我只是在不理解我正在做的事情的情况下抛弃了尝试

1 个答案:

答案 0 :(得分:2)

B和C与对象完全相同,只是因为它们碰巧具有相同的属性。

B和C是单独的实例。他们在记忆中的不同位置。

由于您尚未向c添加任何记录,因此无法删除。

您注释掉的代码,它可能非常重要。看起来这是一种保存包内容或从源加载它的机制。那没有发生,所以c不会有记录。