C# 哪一个更适合相互比较-列表<;int>;还是int[]?
我需要将控件集合中的原始值(文本值,具体地说,转换为0..3的整数)与更新后的值进行比较 对于这种比较,哪个更合适(List或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
我需要将每个元素与其在另一个列表或数组中的“伴生”元素进行比较。内部
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处理:很抱歉,我的措辞不好。我会改正的。