본문 바로가기
C#

리스트(List)

by imagineer_jinny 2021. 7. 13.

리스트는 배열과 비슷하게 여러가지 게임 오브젝트를 한번에 다루게 해줌!

하지만 배열과 달리 방의 갯수가 실시간으로 변화하던지 실시간으로 게임 오브젝트를 넣거나 뺄 수 있음.

 

- 리스트가 필요한 상황

배열을 쓰면 한번 방의 갯수가 정해지면 그 방을 늘려서 뭔가를 집어넣을 수가 없음.

방의 개수를 늘릴 수 있는 유일한 방법은 건물을 통째로 무너트리고 새로 짓는 것 밖에 없음.

만약 기존 값들을 유지하고 싶으면 기존 배열에 있던 모든 값들을 순회해서 새로운 배열에 넘겨주는 수 밖에 없음.

 

이럴 때 리스트가 필요함.

리스트는 배열과 달리 방의 갯수를 정하는 게 아니라 방의 갯수가 들어오는 사람 만큼 생김.

배열과 달리 총 개수를 알 수 없을 때 씀.

 

- 리스트 사용법

리스트 선언할 때 using System.Collections.Generic; 필요

Generic과 관련된 기능들은 c#에서 나중에 추가된 기능들.

리스트는 여러가지 타입에 대응되기 때문에 기본적으로 Generic이라는 기능으로 <>안에 사용하고 싶은 타입을 명시해줘야 함.

나중에 추가되서 List는 기본적으로 클래스이고 클래스이기 때문에 new라는 키워드를 사용해서 찍어냄.

 

순번을 명시해서 추가할 필요 없음

리스트는 기본적으로 방의 갯수가 실시간으로 늘어남.

세명이 들어오면 세개가 생기고 다섯명이 들어오면 다섯개가 생김.

여기서는 마우스를 클릭할 때 마다 방의 갯수가 하나씩 늘어남!

그래서 방의 개수를 처음부터 정할 필요가 없음

 

 

배열에서는 건물 전체는 날릴 수 있어도 방 하나만 삭제할 수는 없음. 그래서 보통 삭제하고 싶을 때 쓰레기 값을 넣곤 하는데 리스트는 방 하나만 빼버릴 수 있음.

그리고 공백이 생기면 실시간으로 조정해서 밀어넣어줌

 

-주의할 점

리스트가 어떤 방을 remove 한다는 의미는 값 그자체가 날아간다는 의미가 아님. 

call by reference가 적용되는 클래스형 오브젝트같은 경우에는 변수가 오브젝트를 가리키는 방식이기 때문에 

remove하면 방이 날아가는거지 방이 가리키고 있던 오브젝트가 날아가는 건 아님.

 

 

'C#' 카테고리의 다른 글

오버라이드  (0) 2021.07.18
상속 + 다형성, 집합  (0) 2021.07.18
정적 변수 + 정적 함수  (0) 2021.07.13
오버로드  (0) 2021.07.13
벡터 연산 기초  (0) 2021.07.12

댓글