C#에서 delegate를 사용하는 두 가지 표현 방식이 있습니다. 기본적으로 동일한 기능을 수행하지만, 코드 가독성과 표현 방식에서 차이가 있어요. 최근에는 람다 표현식을 통해 더 간결하고 현대적인 방식으로 많이 사용해요.
- 기본
delegate사용
여기서는line = Regex.Replace(line, $@"(?:<{_tag}.*?>)(.*?)(?:<\/{_tag}>)", delegate (Match match) { return match.Groups[1].Value; });delegate키워드를 명시적으로 사용하여 익명 메서드를 정의합니다. 이는 C# 2.0에서 처음 도입된 방식입니다. 익명 메서드 방식이므로delegate키워드를 사용하여 특정 작업을 정의하는 것입니다. - 람다 표현식 사용
이 표현은 C# 3.0에서 도입된 람다 표현식을 사용한 방식입니다. 더 짧고 간결하며, 많은 개발자들이 선호하는 스타일입니다.line = Regex.Replace(line, $@"(?:<{_tag}.*?>)(.*?)(?:<\/{_tag}>)", match => { return match.Groups[1].Value; });delegate키워드를 생략하고match =>와 같은 람다 표현식을 사용하여 익명 함수를 정의합니다.
차이점 요약
- 가독성: 두 번째 람다 표현식이 더 간결해 코드를 읽기 쉽습니다.
- 역사:
delegate는 오래된 방식이고, 람다 표현식은 더 최근의 기능입니다. 기능적으로는 동일하지만, 람다 표현식은 최신 C# 코드에서 더 많이 사용되는 경향이 있어요.
람다 표현식을 사용하는 것이 더 짧고 명확하게 코드를 작성할 수 있으므로, 가능하면 두 번째 방식을 사용하는 것이 좋습니다. 물론 현재 소속된 회사의 개발 규칙을 따르는 것이 가장 좋아요.
