如何在.NET中修剪数组?

Anz*_*rio 2 .net vb.net c++-cli visual-c++

说我有一个阵列

array<double>^ buffer = gcnew array<double>(100);
Run Code Online (Sandbox Code Playgroud)

我想要一个像以下一样的功能:

void foo(array<double>^% buffer)
{
    Array::Resize(buffer, 10);
}
Run Code Online (Sandbox Code Playgroud)

但是当你想修剪数组时,它不会分配和/或移动和缓冲[0].

Mar*_*ell 5

一旦创建,.NET数组的大小就是不可变的.你不能修剪它; 你必须重新分配和复制.所以Array.Resize你已经完成了所需的一切.如果你真的不想这样做,也许只是忽略最后的元素.

要么; 使用List<T>,其封装的阵列,和具有TrimExcess().在C#术语中:

    var list = new List<int>(100);
    // prints 0/100
    Console.WriteLine("{0} / {1}", list.Count, list.Capacity);
    list.Add(1);
    list.Add(2);
    list.Add(3);
    // prints 3/100
    Console.WriteLine("{0} / {1}", list.Count, list.Capacity);
    list.TrimExcess();
    // prints 3/3
    Console.WriteLine("{0} / {1}", list.Count, list.Capacity);
Run Code Online (Sandbox Code Playgroud)