Table of Contents
C# 3.0부터 지원하는 확장메서드(Extension Method)는 특수한 종류의 static 메서드인데, 확장메서드는 마치 다른 클래스(혹은 구조체)의 인스턴스 메서드인 것처럼 사용되는 기능을 제공한다. 확장메서드는 클래스, 구조체, 인터페이스 등에 적용될 수 있다.
일반적으로 인스턴스 메서드를 추가하기 위해서는 해당 클래스 (혹은 타입) 안에 메서드를 추가한다. 하지만, 어떤 경우는 메서드를 클래스 (혹은 타입)에 직접 추가하는 것이 어려울 수도 있는데, 이러한 경우 확장메서드가 유용하게 사용될 수 있다. 확장메서드를 사용하면 클래스를 직접 변경하지 않고도, 클래스 외부에서 (확장)메서드를 정의함으로 해서 마치 그 클래스의 기능을 확장한 인스턴스 메서드를 추가한 것 같은 효과를 낼 수 있다.
여기까지가 자세한 설명
쉽게말하면 int 변수에 ToString()함수가 속해있는것처럼 원하는 함수를 더 추가하고싶은데
int구조체를 수정할순없으니까 대응책으로 쓰는것 같은 느낌이다.
사용법은 AlexLee님의 홈페이지를 참고하였다.
public static class ExtensionClass
{
public static List<CoachController> Shuffle(this List<CoachController> _list)
{
for (int i = _list.Count - 1; i >= 0; i--)
{
int rnd = Random.Range(0, i);
CoachController temp = _list[i];
_list[i] = _list[rnd];
_list[rnd] = temp;
}
return _list;
}
}
이렇게 하면 CoachController클래스를 담는 List에 한해
인스턴스 메소드처럼 list.Shuffle(); 로 셔플메소드를 실행할수 있게된다.
리스트의 셔플 알고리즘은 이곳을 참고했다.
'Unity > C#' 카테고리의 다른 글
C# Enum Count 가져오는 방법 (0) | 2021.11.02 |
---|---|
(C#, Unity) Property(프로퍼티)를 인스펙터에 노출시키기 (0) | 2021.11.02 |
WindowsForm#1-Button 컨트롤 (0) | 2021.08.05 |
C# System.Random 사용법 (0) | 2021.07.01 |
[스크랩]GetInstanceID와 GetHashCode (0) | 2021.06.28 |