First와 FirstOrDefault란?
First() 함수와 FirstOrDefault() 함수는 컬렉션에서 첫 번째 요소를 반환하거나 또는 조건을 만족하는 여러 요소 중에서 첫 번째 요소를 반환합니다.
이번 포스팅에서는 First() 함수와 FirstOfDefault() 함수에 대해 정리합니다.
First() 함수와 FirstOfDefault() 함수 사용 방법
▶ First() 함수
- 매개변수가 생략된 경우 컬렉션의 첫 번째 요소를 반환합니다.
- 매개변수로 람다식 또는 Func 대리자를 입력하여 지정된 조건을 만족하는 첫 번째 요소를 반환합니다.
- 지정된 조건을 만족하는 요소가 없거나 빈 컬렉션에서
First()
함수를 호출하면,InvalidOperationException
이 발생합니다.
다음은 First()
함수 예제입니다.
new[] { "A", "B", "C" }.First();
// A
new[] { "A", "B", "C" }.First(x => x.Equals("B"));
// B
new[] { "ABC", "BC", "CD" }.First(x => x.Contains("CD"));
// CD
다음은 First()
함수에서 InvalidOperationException
이 발생하는 경우입니다.
new[] { "A", "B", "C" }.First(x => x.Equals("D"));
// 조건을 만족하는 값이 없음
new[] { "ABC", "BC", "CD" }.First(x => x.Contains("CDE"));
// 조건을 만족하는 값이 없음
new string[0].First();
// 빈 배열에서 First() 함수 호출
▶ FirstOrDefault() 함수
- 매개변수가 생략된 경우 컬렉션의 첫 번째 요소를 반환합니다.
- 매개변수로 람다식 또는 Func 대리자를 입력하여 지정된 조건을 만족하는 첫 번째 요소를 반환합니다.
- 지정된 조건을 만족하는 요소가 없거나 빈 컬렉션에서
FirstOrDefault()
함수를 호출하면, 컬렉션 데이터 유형의 기본 값을 반환합니다.
다음은 FirstOrDefault() 함수 예제입니다.
new[] { "A", "B", "C" }.FirstOrDefault();
// A
new[] { "A", "B", "C" }.FirstOrDefault(x => x.Equals("B"));
// B
new[] { "ABC", "BC", "CD" }.FirstOrDefault(x => x.Contains("CD"));
// CD
다음은 First()
함수에서 InvalidOperationException
이 발생했던 예제를 FirstOrDefault()
함수로 변경합니다.
new[] { "A", "B", "C" }.FirstOrDefault(x => x.Equals("D"));
// null
new[] { "ABC", "BC", "CD" }.FirstOrDefault(x => x.Contains("CDE"));
// null
new string[0].FirstOrDefault();
// null
C#에서 string은 참조 형식이며, 참조 형식의 기본값은 null
입니다. 위 예제에서 FirstOrDefault()
함수는 null
을 반환합니다.
LINQ와 함께 사용되는 경우
▶ First() 함수
컬렉션(또는 반복되는 요소)에 적어도 하나의 요소가 존재하는 경우 사용합니다.
▶ FirstOrDefault() 함수
컬렉션(또는 반복되는 요소)에 조건을 만족하는 요소가 존재하는지 체크하는 경우 사용합니다. First()
함수도 람다식 또는 Func 대리자를 사용하여 지정된 조건을 만족하는 첫 번째 요소를 체크할 수 있지만, 만족하는 경우 예외가 발생하므로 FirstOrDefault()
함수가 더 안전합니다.
'C#' 카테고리의 다른 글
[C#]정적 멤버(static member), 비정적 멤버(Non-static member) (2) | 2021.12.25 |
---|---|
[C#]const와 readonly 차이점 (1) | 2021.12.25 |
[C#]Dictionary 정렬 방법 (0) | 2021.12.20 |
[C#]Dictionary value 값으로 key 찾기 (0) | 2021.12.20 |
[C#]Dictionary 사용 방법 (2) | 2021.12.19 |
댓글