array<double>^ buffer = gcnew array<double>(100);
그리고 같은 뭔가를 원하는 함수를 원하는 :
void foo(array<double>^% buffer)
{
Array::Resize(buffer, 10);
}
하지만 할당 및/또는 이동 & 버퍼 [0] 때 트림 할 때 배열
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