【发布时间】:2013-07-21 16:18:28
【问题描述】:
我想在不使用 ToArray() 函数的情况下从 List 中提取数组以使其生成一个全新的数组。
我不关心数组中是否有多余的东西等,我只想引用列表使用的数组。
编辑:
对于不理解的人:列表在内部使用数组来存储您的元素。当您执行 ToArray() 时,它实际上会生成一个全新的数组,如果数组很大,这可能会很昂贵。我只想引用列表使用的原始数组。
【问题讨论】:
-
让我们知道您的进展情况
-
你为什么要这个?
-
@Tyler 因为我需要将数组的指针指向某个函数,并且出于性能考虑,我不想生成新数组。
-
@BlazArt 这就是为什么你不应该在函数参数中比需要的限制更多。如果该方法的作者将其编写为使用
IList或IEnumerable(如果他只需要迭代它),那么您将不会处于这个位置。 -
@BlazArt 你真的不想这样做。使用
List的全部意义在于,数组是您无法推理的实现细节。可以对可能破坏尝试执行此操作的代码的类的实现进行更改。如果这确实需要,我建议您编写自己的类型来包装数组并根据需要调整其大小,其中它是公开底层数组的公共 API 的一部分。
标签: c# list collections