본문 바로가기
개발/C#

확장 메소드

by 남생이야 2024. 5. 8.

  

  C# 확장 메소드를 사용하면 새로운 형식을 만들거나 다시 컴파일 하는 등의 원래 형식을 수정하지 않고 기존 형식에 메소드를 추가할 수 있다. 확장 메소드는 정적 메소드이여도 인스턴스 메소드 인것처럼 호출된다. 

 

확장 메소드 요구사항 

 - 첫 번째 매개 변수는 메소드에서 확장하거나 연산하는 형식에 해당한다.

 - 확장 메소드를 지정하려면 this 한정자를 확장된 형식에 접두어로 붙여야 한다.

 - 메소드를 확장 메소드로 접근하기 위해 using 지시문을 통해 확장 형식의 네임스페이스를 포함한다. 

 

사용 예시 

유니티의 transform에 확장 메소드를 추가하여 특정한 오브젝트의 자식 오브젝트를 찾아 반환하는 기능을 구현했다. 

 

using UnityEngine;


//  추가 기능 (확장 메소드) 제공 클래스 
public static class Extend_TransformHelpers
{
    // 추가기능 변수는 스태틱으로 선언
    // 어느 타입으로 지정할 것인지 this로 지정해야한다. 
    public static Transform FindChildByName(this Transform  transform,  string name )
    {
        Transform[] transforms = transform.GetComponentsInChildren<Transform>();

        foreach(Transform t in transforms)
        {
            if(t.gameObject.name.Equals(name) == true)
            {
                return t; 
            }
        }

        return null; 
    }
}

'개발 > C#' 카테고리의 다른 글

[C#]상속  (0) 2024.05.11
부분 클래스  (0) 2024.05.08
전처리기  (0) 2024.05.08
Particle  (0) 2024.04.28
[C#] 지연된 실행  (0) 2024.04.17