센로그

[C#] Extension Method (확장 메서드) 본문

게임/Unity, C#

[C#] Extension Method (확장 메서드)

seeyoun 2023. 7. 10. 13:55

◆ Extension Method (확장 메서드)

이미 존재하는 타입을 재정의하거나 상속하지 않고도 새로운 기능을 추가(확장)할 수 있도록 하는 방법

.NET에서 제공하는 Extension Method(확장 메서드) 기능은 특수한 종류의 static 메서드로,

마치 다른 클래스의 메서드인 것처럼 사용할 수 있는 메서드이다.

 

이미 존재하는 타입을 재정의하거나 상속하지 않고도 새로운 기능을 추가할 때 사용한다.

(말그대로 확장할 수 있다는 뜻임!!)

 

※ 기존 메서드와 같은 이름 및 파라미터의 메서드로 확장할 경우, 기존 메서드로 연결됨

 


◆ Extension Method 사용법

< Extension Method 사용법 >

  1. static 클래스 안에 static 메서드를 선언
  2. 메서드의 첫번째 파라미터 확장할 타입을 선언하되, this 키워드와 함께 선언
    (예시: GameObject 타입을 확장할 경우, this GameObject)

 

 

예시) 유니티 GameObject클래스에 name과 tag를 동시에 갖고오는 GetNameWithTag() 메서드를 확장하고 싶다고 하자.

 

다음과 같이 확장하고 싶은 메서드를 static class 안에 static method로 정의한다.

메서드의 첫 파라미터는 확장하고자하는 타입을 넣고, this 키워드를 붙인다.

public static class MyExtension
{
    public static string GetNameWithTag(this GameObject obj)
    {
        return obj.name + obj.tag;
    }
}

 

그러면 이런식으로 GameObject 타입의 객체를 통해 확장된 메서드를 사용할 수 있다.

 

Comments