Learning
When: 1학년 7월 13일
How:
Dictionary나 배열에 대해선 알지만 자주 쓰이는 List에 대해선 몰랐기에 공부를 하려고 하다가 계속 새로운 것을 공부해서 그것들을 정리하다 조금 늦었지만 지금이라도 해야 할 것 같아서 공부를 하게 되었습니다.
Understanding:
- 정의 : List는 가변 크기의 배열이라고 생각하시면 됩니다. 배열의 친구들인 Dictionary나 Stack 같은 collection 타입 클래스이기 때문에 배열과 상당히 닮았습니다.
- 배열과의 차이점 : 배열은 처음 크기를 정하면 그대로 담을 수 있는 요소를 추가하거나 삭제하는 '크기를 바꾸는 것'을 할 수 없습니다. 하지만 List는 Add(), Remove() 등 메서드로 List 안에 있는 요소들을 추가하거나 삭제하는 것이 가능합니다. 즉 크기를 자연스럽게 바꿀 수 있습니다. 이것 말고도 사용할 수 있는 메서드가 배열보다 많아 쓰기 좋은 등 다른 점이 있긴 하지만 커다란 차이점은 이것 하나뿐입니다.
- 선언 방법 : 아래의 코드는 아주아주 간단한 names라는 리스트를 선언하고 Add로 추가한 다음 Remove로 제거해서 마지막에 foreach문으로 콘솔에 names 리스트를 출력하는 코드입니다. 조금 더 자세히 설명해 보자면 처음에 List<string> names는 리스트 변수를 생성하는 코드이고, string을 담는 리스트 변수를 선언하는 것입니다. List는 클래스이기 때문에 리스트 변수는 리스트 객체를 참조하여 그 객체에서 요소를 추가하고 삭제하는 일을 합니다. 그렇기에 List 변수를 선언만 하지 말고 참조를 시켜주어야 하는데, 이것도 new 생성자<제네릭 타입>(); 이렇게 생성자로 리스트 객체를 만들어서 변수에 참조해 주면 됩니다.
(제네릭 타입에 대해 https://hwanji203.tistory.com/48)
그 후에는 메서드를 통해 요소 추가하고 삭제하는데, 바로 다음 차례에 설명이 있습니다.
static void Main(string[] args)
{
List<string> names = new List<string>();
names.Add("Hwan");
names.Add("YongMin");
names.Remove("YongMin");
foreach (string name in names)
{
Console.WriteLine(name);
}
}
- 메서드 : 아래는 List에 사용할 수 있는 메서드들을 설명한 표입니다.
| 메서드명 | 설명 |
| 삽입 | |
| .Add(value) | 리스트의 가장 마지막 인덱스로 value 요소를 추가합니다. |
| .AddRange(collection) | 리스트에 collection(배열, Stack, Dictionary 등)을 뒤에 추가합니다. |
| .Insert(index, value) | 인덱스 번호가 index인 요소를 뒤로 밀고 빈칸에 value를 삽입합니다. (value는 인덱스 번호가 index가 됩니다.) |
| .InsertRange(index, collection) | 인덱스 번호가 index인 요소을 collection의 Range만큼 밀고 그 안을 전부 collection으로 채웁니다. |
| 삭제 (null이 되는 것이 아닌 인덱스 자체를 삭제합니다.) | |
| .Remove(value) | 가장 처음에 있는 요소가 value와 같은 요소를 지웁니다. |
| .RemoveAt(index) | 인덱스 번호가 index인 요소을 지웁니다. |
| .RemoveAll(predicate) | 람다식을 사용하거나 Predicate 델리게이트 타입의 변수에 메서드를 넣어서 사용하는데, 쉽게 설명하면 리스트에 있는 요소를 하나씩 스스로 만든 메서드에 넣어서 true면 지우는 것을 가능하게 해주는 메서드입니다. |
| .Clear() | 리스트의 모든 요소를 지웁니다. |
| 그 외 | |
| .Contains(value) | value가 하나라도 있으면 true 아니면 false를 반환합니다. |
| .IndexOf(value) | 가장 처음에 있는 value와 같은 요소의 인덱스를 반환합니다. |
| LastIndexOf(value) | 가장 마지막에 있는 value와 요소의 인덱스를 반환합니다. |
| Find(predicate) | RemoveAll과 같은 매커니즘으로 가장 처음에 있는 요소를 반환합니다. |
| FindAll(predicate) | 조건에 만족하는 모든 요소를 리스트로 반환합니다. |
| Exists(predicate) | 조건에 맞는 요소가 하나라도 있는지 확인하여 true와 false를 반환합니다. |
Result: 리스트는 이와 같이 정말 편리한 배열을 정말 편하게 사용할 수 있는 collection 중 하나이므로 잘 사용하면 좋을 것 같습니다.
'C#' 카테고리의 다른 글
| [C#] 람다식(1) (2) | 2025.07.15 |
|---|---|
| [C#] Action, Func (0) | 2025.07.14 |
| [C#] event 키워드 (1) | 2025.07.09 |
| [C#] 대리자 (Delegate) (0) | 2025.07.08 |
| [C#] bool 타입이 아닌 값을 반환 형식이 bool인 메서드에서 반환하기 (0) | 2025.07.02 |