C# 哪一个更适合相互比较-列表<;int>;还是int[]?

C# 哪一个更适合相互比较-列表<;int>;还是int[]?,c#,arrays,list,int,C#,Arrays,List,Int,我需要将控件集合中的原始值(文本值,具体地说,转换为0..3的整数)与更新后的值进行比较 对于这种比较,哪个更合适(List或int[]) 我需要将每个元素与其在另一个列表或数组中的“伴生”元素进行比较。内部list也使用数组(即动态调整大小的数组),因此就操作而言,它们是相同的。任何IEnumerable都可以 var pre = Enumerable.Range(1, 3); var post = new [] {0, 2, 1}; var same = pre.Zip(post, (be

我需要将控件集合中的原始值(文本值,具体地说,转换为0..3的整数)与更新后的值进行比较

对于这种比较,哪个更合适(List或int[])


我需要将每个元素与其在另一个列表或数组中的“伴生”元素进行比较。

内部
list
也使用数组(即动态调整大小的数组),因此就操作而言,它们是相同的。

任何
IEnumerable
都可以

var pre = Enumerable.Range(1, 3);
var post = new [] {0, 2, 1};

var same = pre.Zip(post, (before, after) => new {before, after})
    .Where(x => x.before == x.after);

Assert.AreEqual(1, same.Count());

在什么意义上合适?你能举一个比较的例子吗?如果(原始[i]==changed[i]),那么它们都是一个很好的解决方案,因为数组(和列表,正如我在回答中所说)在线性迭代或跳到随机位置时非常快。你说的动态数组是什么意思
List
在内部使用
T[]
,但它并没有什么动态性…@BrianRasmussen我想它是动态的,因为它不是一个单一的数组,
List
定期创建新的数组。我同意,这听起来确实很奇怪。动态的意思是它根据添加/删除来调整分配的空间,因为它无法事先知道您要添加多少项。MSDN:
它使用一个数组来实现IList通用接口,该数组的大小会根据需要动态增加。
@Tudor:我知道
List
是如何实现的,我想说它可以动态处理大小调整的,但我不会称数组本身为动态的。每次当前容量耗尽时,都会创建一个新阵列,并将数据从旧阵列复制到新阵列。该数组只是一个常规数组。所有的动态内容都由
List
@Brian Rasmussen处理:很抱歉,我的措辞不好。我会改正的。