說我有一個數組如何在.NET中修剪數組?
array<double>^ buffer = gcnew array<double>(100);
而且我想,做類似的功能:
void foo(array<double>^% buffer)
{
Array::Resize(buffer, 10);
}
,但不分配和/或移動&緩衝區[0]當你想修剪陣列。
說我有一個數組如何在.NET中修剪數組?
array<double>^ buffer = gcnew array<double>(100);
而且我想,做類似的功能:
void foo(array<double>^% buffer)
{
Array::Resize(buffer, 10);
}
,但不分配和/或移動&緩衝區[0]當你想修剪陣列。
.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);
你不能在.NET中這樣做。 .NET中的數組一旦分配就具有固定的大小;你可以改變數組大小的唯一方法是重新分配它(這是Array.Resize所做的),並且這總是會改變數組在內存中的位置。
我很害怕。我在想ArraySegment可能會有所幫助,但我認爲不是。 謝謝:) – Anzurio 2009-11-17 20:03:12