반응형
확장명 메서드를 사용하면 새 파생 형식을 만들거나 다시 컴파일하거나 원래 형식을 수정하지 않고도 기존 형식에 메서드를 "추가"할 수 있습니다.
확장 메서드는 정적 메서드이지만 확장 형식의 인스턴스 메서드인 것처럼 호출됩니다.
확장 메서드를 사용하면 상속을 받거나 원래 클래스를 복잡하게 수정하는 것 없이 간단히 추가 메서드를 구현할 수 있다.
확장 메서드는 static class 내부에 static으로 정의해야 한다.
공식 문서의 예제와 함께 살펴보자.
string 값의 어절을 카운트하는 메서드가 필요할 때,
일반 클래스에서 해당 메서드를 만들면 대충 아래와 같다.
# TestClass.cs
public class TestClass : MonoBehaviour
{
private void Start()
{
var str = "Hello World! It's a Test";
Debug.Log(StringMethod.CountWord(str));
}
}
public class StringMethod
{
public static int CountWord(string str)
{
return str.Split(new char[] {' ', '!', '?'},
StringSplitOptions.RemoveEmptyEntries).Length;
}
}
확장 메서드를 사용하면 훨씬 깔끔하게 만들 수 있다.
# MyExtensions.cs
public static class MyExtensions
{
public static int WordCount(this String str)
{
return str.Split(new char[] { ' ', '.', '?' },
StringSplitOptions.RemoveEmptyEntries).Length;
}
}
# TestClass.cs
public class TestClass : MonoBehaviour
{
private void Start()
{
var str = "Hello World! It's a Test";
Debug.Log(str.CountWord());
}
}
static class에서 파라미터로 'this <VariableType>'를 받는 static method를 만들면 사용할 수 있다.
static class에 따로 접근하지 않아도 해당 타입의 변수에서 바로 접근이 가능해 아주 편리하다.
반응형
'Unity & C# > Scripting' 카테고리의 다른 글
Data based structure - ScriptableObject (0) | 2020.11.06 |
---|---|
Delegate, Event (2) - UnityEvent (0) | 2020.07.09 |
Delegate, Event (1) - C# Delegate (0) | 2020.07.08 |