⭐ 확장 메서드
기존에 선언되어있는 클래스의 기능을 직접 수정하지 않고 확장하는 것입니다.
협업을 하는 등의 경우 다른 사람의 클래스에서 기능을 확장해야할 경우 확장메서드를 사용하면
협업관계에 혼란을 야기하지 않고 기존의 코드를 건드릴 필요없이 기능의 확장이 가능합니다.
이 외에도 상속 등을 통해 기능을 확장하기 어려운 상황에 확장 메서드를 사용할 수 있습니다.
유니티에서는 주로 Transform이나 Gameobject 등을 다루는 유틸 메서드로 사용합니다.
선언 방법
public class Test : MonoBehaviour
{
void Start()
{
string text = "extension Method";
int eCount = text.CountChar("e");
Debug.Log(eCount);
}
}
//확장 메서드 - 문자열에서 targetStr 문자가 몇 개 있는지 반환하는 메서드
public static class ExtensionMethod
{
//this string str => string 클래스의 확장 메서드로 정의
public static int CountChar(this string str, string targetStr)
{
int count = 0;
foreach(char c in str)
{
if (string.Compare(c.ToString(), targetStr, StringComparison.OrdinalIgnoreCase) == 0)
count++;
}
return count;
}
}
● 확장 메서드는 반드시 static 클래스의 static 메서드로 선언해야 합니다.
○ 메서드의 첫 번째 인자를 아래와 같은 형식으로 선언
○ this 확장할 타입 이름 형식
사용하는 이유
● 코드의 재사용성이 증가
○ 특정 기능을 여러 클래스에서 사용 가능하며, 일관되게 사용할 수 있습니다.
● 기존 클래스를 수정하지 않고 기능의 확장이 가능
○ 기존 클래스가 아닌 정적 클래스, 정적 메서드를 통해 따로 확장하기에 기존 클래스를 직접 수정하지 않고 확장할 수 있습니다.
● 가독성 향상
○ 정적 메서드임에도 인스턴스 메서드처럼 사용 가능하기에 가독성과 편의성이 향상됩니다.
'개발, IT > C#' 카테고리의 다른 글
| [유니티 / C# ] 캡쳐(Capture)와 클로저(Closure) (0) | 2025.09.23 |
|---|---|
| [유니티 / C#] 가변 인자 params (0) | 2025.09.23 |
| [유니티 / C#] 대리자 (Delegate, Event, Action, Function) (0) | 2025.09.22 |
| [유니티 / C#] 제네릭 (Generic) (0) | 2025.09.19 |
| [유니티 / C#] 박싱(Boxing), 언박싱(Unboxing) (0) | 2025.09.19 |