Unity

내일배움캠프: 확장메서드

pracumj 2024. 12. 16. 23:14

확장 메서드(Extension Methods)란?

개발을 하다보면 기존 클래스의 기능을 추가하고 싶은데 클래스 상속이 막혀 있거나 기능을 추가하기 어려운 경우가 존재한다. 이럴 때 확장 메서드를 사용하면 편하게 기능을 추가할 수 있다. 

확장 메서드의 특징

  1. 정적 클래스정적 메서드로 선언
  2. 확장하려는 클래스의 인스턴스를 첫 번째 매개변수로 받으며, this 키워드를 사용
  3. 네임스페이스를 통해 확장 메서드를 사용 가능 

확장 메서드의 기본 문법

public static class MyExtensions
{
    public static int WordCount(this string str)
    {
        return str.Split(new char[] { ' ', '.', '?' }, StringSplitOptions.RemoveEmptyEntries).Length;
    }
}
  • MyExtensions: 확장 메서드를 정의할 정적 클래스
  • this string str: 확장하고자 하는 클래스(여기서는 string)의 인스턴스를 의미

위 예제에서 WordCount 확장 메서드는 string 타입에 대해 단어 개수를 계산하는 기능을 제공, this를 통해서 확장 해주는게 핵심 


확장 메서드 주의사항

  1. 확장 메서드를 사용하기 위해선 해당 메서드를 정의한 네임스페이스를 반드시 포함해야 함
  2. 메서드 충돌에 주의하세요. 동일한 확장 메서드가 여러 곳에 정의되면 컴파일러가 혼동할 수 있다.
  3. 메서드 우선순위: 확장 메서드보다 클래스의 인스턴스 메서드가 우선시 됨.

확장 메서드의 장점

  1. 기존 코드 수정 없이 기능 추가 가능
  2. 코드의 가독성과 재사용성 향상
  3. 특정 타입에 대한 유틸리티 함수 구현이 용이