[c#] 메서드의 확장 메서드와 LINQ

C#은 확장 메서드(extension method)와 Language Integrated Query (LINQ)를 사용하여 코드를 더 간결하고 읽기 쉽도록 만들어줍니다. 이러한 기능들은 특히 컬렉션을 다룰 때 유용하며, 코드의 가독성을 향상시키고 개발 생산성을 높이는 데 큰 도움이 됩니다.

확장 메서드 (Extension Methods)

확장 메서드는 C# 3.0부터 도입된 기능으로, 기존 클래스의 기능을 확장할 수 있도록 해줍니다. 이를 통해 필요한 메서드를 따로 정의하지 않고 기존 클래스의 인스턴스에 새로운 메서드를 추가할 수 있습니다.

아래는 List<T>를 확장하여 리스트에서 짝수만을 필터링하는 확장 메서드를 정의하는 예제입니다.

public static class ListExtensions
{
    public static IEnumerable<int> FilterEvenNumbers(this List<int> list)
    {
        foreach (var item in list)
        {
            if (item % 2 == 0)
                yield return item;
        }
    }
}

위의 예제에서 ListExtensions 클래스는 List<T>에 새로운 메서드인 FilterEvenNumbers를 추가하고 있습니다. 이제 이 메서드는 List<int> 인스턴스에서 직접 호출할 수 있게 됩니다.

List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
var evenNumbers = numbers.FilterEvenNumbers();

위의 코드에서 FilterEvenNumbers 메서드를 호출하여 리스트에서 짝수를 필터링하고 있습니다.

Language Integrated Query (LINQ)

LINQ는 C# 3.5부터 지원되는 언어 집약 질의(Language Integrated Query)이며, 컬렉션 데이터를 처리하는 데 사용됩니다. LINQ를 이용하면 컬렉션의 데이터를 간결한 구문으로 처리할 수 있고, 데이터베이스 쿼리처럼 질의할 수 있습니다.

아래는 LINQ를 사용하여 리스트에서 짝수만을 필터링하는 예제입니다.

List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
var evenNumbers = from number in numbers
                  where number % 2 == 0
                  select number;

위의 코드는 numbers 리스트에서 LINQ 구문을 사용하여 짝수를 필터링하고 있습니다.

결론

확장 메서드와 LINQ는 C#에서 코드를 간결하게 만들어주는 매우 유용한 기능입니다. 확장 메서드는 기존 클래스의 기능을 확장하고, LINQ는 컬렉션을 질의하고 조작하는 데 사용됩니다. 이러한 기능들을 잘 활용하여 읽기 쉬운 코드를 작성하고 생산성을 향상시키는 것이 중요합니다.

자세한 내용은 Microsoft 공식 문서를 참고하실 수 있습니다.