게임 프로그래밍/C# & Unity 관련 자료

[C#] List<T> 사용 관련 코드 및 설명

Dannian 2017. 9. 15. 17:19
반응형

요즘 졸업프로젝트 때문에 Unity와 Arduino를 활용해서 게임을 만드는 중인데, 만들다 중간중간 알게되거나 참고 할 만한 내용을 올리려 합니다.

첫 번째로 지금 만들고 있는 게임에서 활용 할 List<T>에 관한 내용입니다.

 

 

List<T>란?

시간이 될 때 올릴 예정인 ArrayList 와 같은 기능을 하는 클래스입니다. 

 ArrayList를 간단히 설명을 하자면 가장 배열과 닮은 컬렉션이라 볼 수 있습니다.

다만 배열과 다르게 컬렉션 생성시 용량을 지정 할 필요 없이 자동으로 용량이 늘어나거나 줄어드는 것이 큰 장점입니다.

그럼 ArrayList를 사용하면 되는데 왜 List<T> 클래스를 사용하는가 라고 물어보실 수 있는데, 이는 박싱과 언박싱의 문제때문입니다.

(참고링크 - List 종류들의 박싱 언박싱에 대해서도 자세히 설명해 놓은 블로그입니다.(Mr1님 정말 감사합니다. 도움이 많이 되었습니다!))

 

 

List<T> 사용 방법

List<T>생성자, 속성, 메서드 등을 확인 할 수 있는 곳 - MS

위의 링크에 개략적인 설명이 나와있습니다. 그 중 제가 사용한 것을 위주로 설명을 하겠습니다.(아마도 계속 내용이 바뀔겁니다.)

 

생성자

List<T>()에서 T는 요소의 형식입니다. 예를 들면 Int, String 등이 들어가게 됩니다. ArrayList와는 달리 List<T>는 이 T에 선언된 형식만 사용하게 됩니다.

만일 여러 형식을 이용하고 싶다면 귀찮더라도 ArrayList를 사용하셔야 할 겁니다.

 

속성

Count : list 내부의 요소의 수를 확인 할 수 있습니다.

 

메서드

Add(T) :  개체를 List<T>의 끝 부분에 추가하게 됩니다.

예제 코드는 다음과 같습니다.

List<int> list = new List<int>();
for (int i = 0; i < 5; i++)
{
   list.Add(i); // 0~4까지 배열에 들어감
}

이렇게 작성 된 list를 Console.Write를 이용해 뿌리게 되면 01234가 출력됩니다.

 

Insert(Int32, T) : 지정된 인덱스(Int32 부분)에 요소(T)를 삽입합니다.

위의 예제에 다음과 같이 추가하는 형식입니다.

list.Insert(0,"6"); //list의 인텍스 0번째에 삽입

 

이렇게 넣으면 list를 출력했을때 601234가 출력 될 것입니다.

 

Clear() : 리스트 내부의 모든 요소를 지울 때 사용합니다.

예를 들면 Insert() 까지 수행했을 때 list를 카운트 해 보면 6이 출력 될텐데, list.Clear()를 수행 후 카운트 해 보면 0이 출력됨을 볼 수 있습니다.

 

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace start
{
    class Program
    {
        static void Main(string[] args)
        {
            List<int> list = new List<int>();
            for (int i = 0; i < 5; i++)
            {
                list.Add(i); // 0~4까지 배열에 들어감
            }
            foreach (int element in list)
            {
                Console.Write("{0}", element);//각 배열의 내용을 출력시킨다 01234출력
            }
            Console.WriteLine();//엔터 기능
            Console.WriteLine(list[0]);//0출력

            Console.WriteLine(list.Count);//5출력

            if(list.Count == 5)
            { //list의 길이가 5일때 실행.
                list.RemoveAt(0);//list배열의 0번째 없엠. - 그와 동시에 1~4배열 땡겨짐. 실제 호출시 0번째부터 3번배열까지 출력됨. 1,2,3,4출력

                foreach (int element in list)
                {
                    Console.Write("{0}",element);//1234출력
                }
                Console.WriteLine();

                Console.WriteLine(list[0]);//1이 출력된다.
                Console.WriteLine(list.Count);//4출력됨
                list.Add(7);//7을 맨 뒤에 추가함

                Console.WriteLine(list[4]);//가장 마지막 배열 숫자 출력. 7
                Console.WriteLine(list.Count);//5나옴

                foreach (int element in list)
                {
                    Console.Write("{0}", element);//각 배열의 내용을 출력시킨다 12347출력
                }
            }
        }
    }
}

위의 코드는 List<T> 사용할때 pop 기능이 있나 궁금해서 테스트로 만들어 본 코드입니다.

 

Dannian의 블로그입니다.

 

 

본 포스팅은 학습 또는 정리를 목적으로 쓰인 글입니다.

내용중 틀린 것이 있다면 댓글로 알려주시면 감사하겠습니다!

반응형