.NET 2.0에는 두 개의 배열을 가져 와서 하나의 배열로 병합하는 기본 제공 기능이 있습니까?
배열은 모두 같은 유형입니다. 코드 배열 내에서 널리 사용되는 함수에서 이러한 배열을 가져오고 데이터를 다른 형식으로 반환하도록 함수를 수정할 수 없습니다.
가능한 경우 이것을 달성하기 위해 내 자신의 함수를 작성하지 않으려 고합니다.
답변
배열 중 하나를 조작 할 수 있으면 복사를 수행하기 전에 크기를 조정할 수 있습니다.
T[] array1 = getOneArray();
T[] array2 = getAnotherArray();
int array1OriginalLength = array1.Length;
Array.Resize<T>(ref array1, array1OriginalLength + array2.Length);
Array.Copy(array2, 0, array1, array1OriginalLength, array2.Length);
그렇지 않으면 새로운 배열을 만들 수 있습니다
T[] array1 = getOneArray();
T[] array2 = getAnotherArray();
T[] newArray = new T[array1.Length + array2.Length];
Array.Copy(array1, newArray, array1.Length);
Array.Copy(array2, 0, newArray, array1.Length, array2.Length);
답변
C # 3.0에서는 LINQ의 Concat 방법을 사용하여이를 쉽게 수행 할 수 있습니다.
int[] front = { 1, 2, 3, 4 };
int[] back = { 5, 6, 7, 8 };
int[] combined = front.Concat(back).ToArray();
C # 2.0에서는 그러한 직접적인 방법이 없지만 Array.Copy가 가장 좋은 솔루션 일 것입니다.
int[] front = { 1, 2, 3, 4 };
int[] back = { 5, 6, 7, 8 };
int[] combined = new int[front.Length + back.Length];
Array.Copy(front, combined, front.Length);
Array.Copy(back, 0, combined, front.Length, back.Length);
이것은 자신의 버전을 쉽게 구현하는 데 사용할 수 있습니다 Concat
.
답변
LINQ 사용 :
var arr1 = new[] { 1, 2, 3, 4, 5 };
var arr2 = new[] { 6, 7, 8, 9, 0 };
var arr = arr1.Union(arr2).ToArray();
중복이 제거됩니다. 중복을 유지하려면 Concat을 사용하십시오.
답변
중복을 제거하지 않으려면 다음을 시도하십시오.
LINQ 사용 :
var arr1 = new[] { 1, 2, 3, 4, 5 };
var arr2 = new[] { 6, 7, 8, 9, 0 };
var arr = arr1.Concat(arr2).ToArray();
답변
먼저 “여기에서 실제로 배열을 사용해야합니까?”라는 질문을 스스로 확인하십시오.
속도가 가장 중요한 곳에 무언가를 만들지 않는 한, 형식화 된 목록 List<int>
은 아마도 갈 길입니다. 내가 배열을 사용하는 유일한 시간은 네트워크를 통해 물건을 보낼 때 바이트 배열입니다. 그 외에는 절대 만지지 않습니다.
답변
LINQ를 사용하는 것이 더 쉬울 것입니다 .
var array = new string[] { "test" }.ToList();
var array1 = new string[] { "test" }.ToList();
array.AddRange(array1);
var result = array.ToArray();
먼저 배열을 목록으로 변환하고 병합하십시오 … 그런 다음 목록을 배열로 다시 변환하십시오. 🙂
답변
Array.Copy 를 사용할 수 있다고 생각합니다 . 소스 인덱스와 대상 인덱스가 필요하므로 한 배열을 다른 배열에 추가 할 수 있습니다. 단순히 다른 것을 추가하는 것보다 더 복잡해 져야하는 경우에는 이것이 올바른 도구가 아닐 수도 있습니다.