C#で配列を2つの配列に分割するにはどうすればよいですか?
たとえば、配列[1,2,3,4,5,6,7,8,9,10]があり、それを[1,2,3,4,5]と[6,7,8、 9,10]
Linq の使用
var a = new[] {1,2,3,4,5,6,7,8,9,10}
var a1 = a.Take(a.Length / 2).ToArray();
var a2 = a.Skip(a.Length / 2).ToArray();
Linq を使用:
var source = new int[] {1,2,3,4,5,6,7,8,9,10};
var firstHalf = source.Take(source.Length/2).ToArray();
var secondHalf = source.Skip(source.Length/2).ToArray();
var source = new int[] {1,2,3,4,5,6,7,8,9,10};
var firstHalf = new int[source.Length/2];
var secondHalf = new int[source.Length - source.Length/2];
Array.Copy(source, firstHalf, firstHalf.Length];
Array.Copy(source, firstHalf.Length, secondHalf, 0, secondHalf.Length];
次の方法を使用して、配列を2つの別々の配列に分割できます。
public void Split<T>(T[] array, int index, out T[] first, out T[] second) {
first = array.Take(index).ToArray();
second = array.Skip(index).ToArray();
}
public void SplitMidPoint<T>(T[] array, out T[] first, out T[] second) {
Split(array, array.Length / 2, out first, out second);
}
使用法:
int[] myArray = new int[] { 1,2,3,4,5,6,7,8,9,10 };
int[] newArray1;
int[] newArray2;
SplitMidPoint<int>(myArray, out newArray1, out newArray2);
差出人:C#配列の分割
public static T[] SubArray(this T[] data, int index, int length)
{
T[] result = new T[length];
Array.Copy(data, index, result, 0, length);
return result;
}
public void Split(T[] Source, T[] arr1,T[] arr2)
{
if(source.Length == 0)
{
arr1 = arr2 = new T[0];
return ;
}
int half = source.Length/2;
arr1 = source.SubArray(0, half);
arr2 = source.SubArray(half-1, half);
}