이름 때문에 착각할 수 있지만, c#의 List는 일반적인 자료구조에서 배우는 연결 리스트가 아니다. 사실상 배열에 더 가깝다.
c#에서 List는 내부적으로 동적으로 크기를 조정할 수 있는 배열을 사용하며, 요소를 추가하거나 삭제할 때마다 새로운 배열을 생성하고 기존의 요소들을 복사하는 작업을 수행하지 않는다
대신, List는 내부적으로 요소를 저장하는 배열의 크기를 늘리거나 줄이는 작업을 수행한다.
위의 설명이 어렵다면 아래의 그림을 보자.
아래는 내가 그린 배열의 단점이다.
아래는 c#에서 구현된 List다.
정리하자면 c#에서 List는 사실상 배열인데 사용자에게 편하도록, 자체적으로 미리 크게 배열 크기를 할당받아서
메모리를 재할당 할 가능성을 줄인(list에 값이 계속 추가될 경우 재할당은 무한하게 이루어질 수 밖에 없다.)
배열이다.
유저 친화적인 배열이라고 생각하면 편할듯.