我有一个字符串列表Dad,mam,Junior,Richard。假设我从列表中删除了索引为2的 Junior。理查德的指数是变成 2 还是仍然是 3 与第二位的差距?
感谢您的帮助
假设我从列表中删除了索引为 2 的 Junior。理查德的指数是变成 2 还是仍然是 3 与第二位的差距?
它变成 2。没有间隙。当您添加一个元素时,该元素将附加到列表的末尾。
顺便说一句,伙计,这很难验证吗?我的意思是您无权访问编译器或其他东西?
using System;
using System.Linq;
public class Program
{
static void Main()
{
var list = new[] { "Dad", "mam", "Junior", "Richard" }.ToList();
list.RemoveAt(2);
Console.WriteLine(list[2]);
}
}
印刷:
Richard
没有间隙。如果你想要一个差距,用你自己替换那个位置的值null
。
大多数情况下,您不想要间隙,因此您会很高兴它为您保持整洁。
但是,一个实际的结果是,如果您要在同一操作中删除很多项目,您可能会发现仅使用未删除的项目构建一个新列表会更快(因为它会在每个消除)。
不过,这必须花很多钱才值得。如果您遇到了很大的延迟,请记住这一点,而不是直接跳入该方法。
没有差距 - 编辑后的列表仅包含三个项目,它们的索引为0
,1
和2
。
它会变成 2。 List 的 index 始终是 item 在 list 中的位置;可以而且永远不会有差距。此外,Count
将始终返回列表中的项目数,并且项目的索引将始终为 0 到Count-1
.