C#에서 시퀀스용 확장 메서드 직접 작성하기
이 레슨에서는 어떤 요소도 조건을 만족하지 않는지 확인하는, 모든 시퀀스용 확장 메서드 None()을 작성합니다.
소개
확장 메서드를 쓰면 기존 타입에 이름만 봐도 뜻을 알 수 있는 연산을 추가할 수 있습니다. 여기서는 LINQ의 Any와 반대로, 조건을 만족하는 요소가 하나도 없을 때 true를 돌려주는 None 메서드를 작성합니다.
None<T> 메서드는 IEnumerable<T>를 확장하므로 배열, List, 그 밖의 모든 시퀀스와 동작합니다. 반복문은 각 요소를 돌다가 조건을 만족하는 요소가 나오면 즉시 false를 돌려주고, 끝까지 가면 true를 돌려줍니다. 배열 [1, 3, 5]에는 짝수가 없으므로 결과는 True입니다.
실행 가능한 C# 예제
C#
Program.cs
using System;
using System.Collections.Generic;
static class EnumerableExtensions
{
public static bool None<T>(this IEnumerable<T> source, Func<T, bool> predicate)
{
foreach (T item in source) if (predicate(item)) return false;
return true;
}
}
class Program
{
static void Main() => Console.WriteLine(new[] { 1, 3, 5 }.None(number => number % 2 == 0));
}
True디버거로 연습하기
중요한 대입이나 조건에 중단점을 두고 Debug를 눌러 다음 줄로 넘어가기 전에 지역 변수 값을 확인하세요.
챌린지로 연습하기
이 레슨에서 배운 내용으로 실제 문제를 풀어 보세요. 모든 챌린지는 브라우저에서 실행되며 즉시 테스트와 AI 리뷰를 받을 수 있습니다.
모든 챌린지