안 쓰던 블로그

c# 배열 여러 개를 하나로 합치는 아름다운 방법(c# combine multiple arrays to one) 본문

유니티/개발

c# 배열 여러 개를 하나로 합치는 아름다운 방법(c# combine multiple arrays to one)

proqk 2020. 3. 27. 17:37
반응형

배열 합치기를 구글에 검색하면 Linq를 쓰라느니 copy를 쓰라느니

서로 베껴서 글 쓴 것 같은 바이트 배열만 많이 나오고 별로 도움이 되질 않음

 

그 와중에 엄청나게 아름다운 방법을 찾았다

https://www.dotnetperls.com/combine-arrays

 

C# Combine Arrays: List, Array.Copy and Buffer.BlockCopy - Dot Net Perls

C# Combine Arrays: List, Array.Copy and Buffer.BlockCopy Combine two one-dimensional arrays into a single array. Use List, AddRange, Array.Copy and Buffer.BlockCopy.

www.dotnetperls.com

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        int[] array1 = { 1, 2, 3, 4, 5 };
        int[] array2 = { 6, 7, 8, 9, 10 };

        var list = new List<int>();
        list.AddRange(array1);
        list.AddRange(array2);

        int[] array3 = list.ToArray();

        foreach (int element in array3)
        {
            Console.WriteLine(element);
        }
    }
}

바로 리스트를 이용하는 것!!

리스트를 만들어서 배열들을 뒤에 붙힌다

그리고 리스트를 배열화해서 원하는 자료형 배열로 전환

 

 

아래는 유니티에서 Sprite 배열로 응용한 코드

Sprite[] imageBox1 = Resources.LoadAll<Sprite>("symbol_Image_1");
Sprite[] imageBox2 = Resources.LoadAll<Sprite>("symbol_Image_2");
Sprite[] imageBox3 = Resources.LoadAll<Sprite>("symbol_Image_3");

var list = new List<Sprite>();
list.AddRange(imageBox1);
list.AddRange(imageBox2);
list.AddRange(imageBox3);

Sprite[] imageBox = list.ToArray();
Array.Sort(imageBox, delegate (Sprite x, Sprite y) { return int.Parse(x.name).CompareTo(int.Parse(y.name)); });

3개 배열을 리스트에 합치고 리스트를 배열화

그리고 숫자 순으로 정렬했다

 

깔-끔

반응형
Comments