반응형
Count 속성
Count는 매서드가 아닌 속성이다. 속성은 쉽게 설명하면 필드를 캡슐화하여 사용하기 쉽게 만든 것이다.
- 정적 속성으로, 컬렉션 요소들의 수를 즉시 반환한다.
- 즉시 계산되며, 특정 타입의 컬렉션에서만 제공된다.
(List<T>, Array, Dictionary<TKey, TValue> 등등 직접적인 크기를 알 수 있는 자료구조) - O(1)의 시간 복잡도를 가진다.
Count 예제 코드
var list = new List<int> { 1, 2, 3, 4 };
Console.WriteLine(list.Count); // 출력: 4
Count() 메서드
LINQ 메서드로, 컬렉션 또는 열거 가능한 시퀀스의 요소 수를 반환한다. LINQ 메서드이기 때문에 당연하게도 System.Linq 네임스페이스에서 제공한다.
- 메서드로, 컬렉션 요소들의 수를 반환한다.
- 조건부 카운팅이 가능하다.
- O(n)의 시간 복잡도를 가진다. (IEnumerable<T> 타입의 컬렉션에서는 전체 요소를 순회하며 개수를 계산. 하지만, ICollection<T> 타입의 경우 Count 속성을 내부적으로 사용하므로 효율적이다.)
Count() 예제 코드
var list = new List<int> { 1, 2, 3, 4 };
Console.WriteLine(list.Count(x => x > 2)); // 출력: 2
Count vs Count()
정리하자면
가능하면 Count 속성을 사용
- 이미 컬렉션의 크기를 알고 있는 경우 성능이 좋다. (예: List<T>, Array)
- 성능이 중요한 경우 O(1)이므로 빠르다.
꼭 Count()를 사용해야 하는 경우
- 조건부 카운트가 필요하거나, IEnumerable<T>를 다룰 때
- 컬렉션이 반드시 크기를 노출하지 않는 타입일때
같이 읽으면 좋은 글
'프로그래밍 > C#' 카테고리의 다른 글
C# 속성(Property)이란 무엇인가 (1) | 2024.12.12 |
---|---|
C# 표현식 본체 멤버와 암시적 연산자 함께 사용하기 (0) | 2024.12.06 |
C# 문자열 비교하기 ==연산자 vs Equlas() 메서드 (0) | 2024.11.27 |
C# 비동기 프로그래밍 TAP이란 무엇인가? (0) | 2024.11.22 |
C# 비동기 프로그래밍 APM이란 무엇인가? (0) | 2024.11.21 |
댓글