Unity/TIL
Unity Extension Method / 확장 메서드
김차루
2024. 7. 5. 21:07
C# Extension Method
1. 확장 메소드란?
기존 클래스의 기능을 확장하는 기법
확장 메소드는 클래스의 외부에서 클래스의 메서드처럼 사용할 수 있는 , 새로운 메서드를 만들 수 있는 기능이다. 이것은 보통 이미 만들어진 클래스에 새로운 메소드를 추가할 때 사용하는데
예를 들어, 협업 과정에서 A가 만들어둔 a 스크립트에 메소드를 추가하고 싶은데 그 스크립트에 직접적으로 수정하기 어려운 상태일 때 사용이 가능하다.
예시가 아니더라도 남이 만든 라이브러리나 C# 기본 제공 클래스를 수정해야 하는 일에서도 사용이 가능하다. 이 기능은 C#에서만 제공하고 있는 기능이다.
public class Calculator
{
public Calculator()
{
}
public int Plus(int a, int b)
{
return a+b;
}
public int Minus(int a, int b)
{
return a-b;
}
}
위와 같은 계산기가 있다고 하자. 지금 상황에서 Calculator의 인스턴스는 plus와 minus 밖에 없다. 이 상황에서 스크립트 수정 없이 곱하기와 나누기를 추가 하고자 한다.
public static class Extension
{
public static int Times(this Calculator calculator, int a, int b)
{
return a*b;
}
public static int Divide(this Calculator calculator, int a, int b)
{
return a/b;
}
}
주의할 점
스크립트를 보면 먼저 1. Static 으로 선언되어 있는 것을 확인할 수 있다. 정의한 클래스 내부에 확장하고 싶은 메소드는 Static으로 선언해줘야 한다. 그리고 선언부 앞에 2. this 가 있는 것을 볼 수 있다. 매개변수에 this를 포함해야지 선언된 클래스를 현재 클래스에서 확장 시킨다는 것을 알 수 있다.
프로젝트 대입
나의 경우 프로젝트에서 추가 수정을 위한 목적으로 사용하지 않았다. 선언을 쉽게 하기 위해 추가하는 식으로 프로젝트에 사용해보았다.