我是否在列表中使用insert或者是否有其他方式C#

时间:2013-03-01 10:46:46

标签: c# list insert inventory

我正在制作库存系统,但我不记得我可以使用哪个。

我有一只鼠标list<item>inventory<item>如果点击一个按钮我想从清单中移除该项目并将其移动到鼠标(我已经完成)但是然后将其放回去某处是我遇到麻烦的地方。

如果那里已经有一个项目就很简单了...即使用插入但是如果有一个项目那我该怎么办?我是否将其添加到鼠标列表然后插入位置或插入将旧列表项移动到列表中的开头或结尾或下一个。 或者,还有另一种方式吗?

基本上我想点击一个按钮删除已经存在的项目并放入鼠标列表中的项目,然后如果鼠标列表中已经存在某些内容,则将其添加到旧项目所在的位置。 / p>

我想知道插入如何与列表一起工作。

如果我在索引2处插入了对象/项目,那么该对象/项目会在那里向上移动并成为索引3或者是否会被删除。

我想知道我是否从列表中删除了该索引变为null的内容? ,即如果喜欢这个索引0 = 2 索引1 = 51 索引2 = {{1}例如索引3 = 213 索引4 = null索引4 变为索引3

2 个答案:

答案 0 :(得分:0)

列表是幕后的一个数组(如果您使用像Reflector这样的IL反汇编程序,您将可以检查它。)

话说回来,当你从列表中删除一个项目时,List<T>将在内部创建一个新数组,其中包含除了删除项目之外的所有项目。

另一方面,当您项目插入列表时,您将替换整个索引中的项目,从索引向下的所有内容都向下移动一个位置 (感谢BinaryWorrier)。索引中的对象不会被“销毁”:您要从列表中删除对象引用。

答案 1 :(得分:0)

让我们来看看

static void Main(string[] args)
{
    var names = new List<string> { "Homer", "Marge", "Lisa" };

    Show(names);

    names.Insert(1, "Bart");
    Console.WriteLine("Inserted Bart at 1");

    Show(names);

    names.RemoveAt(0);
    Console.WriteLine("Removed Homer");
    Show(names);
}

private static void Show(List<string> names)
{
    Console.WriteLine("Names");
    for (int i = 0; i < names.Count; i++)
        Console.WriteLine("\t{0}: {1}", i, names[i]);
}

给我们。 。

姓名
        0:荷马郎         1:Marge
        2:丽莎
插入巴特1 名称
        0:荷马郎         1:巴特
        2:Marge
        3:丽莎
删除了荷马 名称
        0:巴特
        1:Marge
        2:丽莎

因此。

  1. 在第二个位置添加,将移动前一个第二个项目 到第三个项目(并将所有内容推到一个位置下方)
  2. 删除项目会将所有内容向上移动一个 项目
  3. 科学方法有助于解决这些问题(即理论,实验,观察,必要时重复)

    这会回答你的问题吗?