확장 메서드

Clean·2025년 3월 27일

개념

  • 기존에 있는 클래스를 건드리지 않고, 메서드를 추가할 수 있도록 하는 기능이다.

문법

public static class 확장메서드 클래스
{
    public static 반환형 함수명(this 확장할자료형 변수명, 추가매개변수...)
    {
        // 구현
    }
}

// ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

public static class DataTypeExtension
{
    public static int CountChar(this string sourceText, char targetChar)
    {
        int count = 0;
        foreach (char c in sourceText)
        {
            if (c == targetChar) count++;
        }
        return count;
    }
}

특징

  • 확장 메서드는 정적(static) 클래스 + 정적 함수에만 사용해야 한다.

  • 첫번째 매개변수this 키워드를 붙여 확장할 타입을 지정한다.

  • 클래스나 구조체의 소스 수정 없이 기능을 추가할 수 있다.

  • 내장 클래스에도 사용하여 확장할 수 있다.

  • 다른 .cs 파일 클래스를 확장하려면 using 지시문으로 네임스페이스를 추가해야 한다.


예시

public class Player
{
    public string name = "플레이어";

    public void Hi()
    {
        Console.WriteLine("안녕하세요");
    }
}

public static class PlayerExtensions
{
    public static void Hello(this Player player)
    {
        Console.WriteLine($"저는 {player.name}입니다.");
    }
}
// Main()
Player player = new Player();
player.Hi();
player.Hello(); // 확장 메서드 사용

뭔가 사용하기 까다로워 보인다...

지금은 혼자서 하나의 cs 파일로 코딩하다 보니, 어떻게 활용해야 할지 아직은 감이 안 온다.

하지만 협업 상황이나 코드를 분리해서 작업할 때, 사용할 기회가 생길 것 같다.

0개의 댓글