본문 바로가기
프로그래밍/C#

C# Count vs Count() 차이에 대해서

by bantomak 2024. 12. 16.
반응형

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# 속성(Property)이란 무엇인가

속성(Property)이란속성(Property)은 C#에서 클래스, 구조체 또는 인터페이스의 필드와 비슷한 역할을 하지만, 더 안전하고 유연하게 데이터를 캡슐화 할 수 있도록 설계된 멤버이다. 속성을 사용하면

jettstream.tistory.com

댓글