当我在调试器中查看由单个项目填充的列表时,其_items
字段包含4个元素。你能解释一下这种行为吗?
我发现在调试控制台应用程序以了解Distinct
和ToList
及其结果时,我感到困惑。代码:
List<int> nums = new List<int>() { 6, 6, 6, 6, 6, 6, 6, 6 };
List<int> distinctNums = nums.Distinct().ToList();
int[] distinctNums2 = nums.Distinct().ToArray();
distinctNums
在_items
中包含4个元素:(6, 0, 0, 0)
,这显然是错误的。 distinctNums2
具有1个正确的项目(6)
。 最佳答案
正如您期望的那样,这将创建仅包含一项的列表distinctNums
。但是,.NET中的列表由数组支持,当您向其中添加项目时,数组会自动调整大小。该数组的起始大小为4,因此如果您碰巧通过反射或在调试器中对其进行探测,则内部数组将为[4, 0, 0, 0]
。
但是,如果您检查一下,就会发现distinctNums.Count == 1
。比较 Count
和 Capacity
属性。