인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

Lucas님의 프로필 이미지

작성한 질문수

C# 프로그래밍 기초부터 실전 활용까지

정적 클래스, 확장 함수

정적 클래스, 확장 함수에서 매개변수로 this를 쓰는 이유?

해결된 질문

작성

·

71

0

안녕하세요 🙂

확장 함수 부분 설명해 주실 때 매개변수로 this string text 를 쓰셨는데, this가 왜 입력 되었는지 궁금합니다.

앞선 강의에서 setter 할 때 this 키워드가 클래스의 멤버임을 증명하는데 쓰이는 것 같은데, 여기서도 단순 그런 역할 인지요?

답변 1

1

Kaburi님의 프로필 이미지
Kaburi
지식공유자

안녕하세요~ 정적 클래스의 "첫 번째 매개변수"에 사용되는 this 키워드는 다음에 정의된 타입에 대해서"확장 함수를 정의하겠다"는 특별한 의미를 지닙니다.

따라서 아래와 같이 사용할 수 있습니다.

// 정적 클래스

static class MyExtension
{
    // 확장 메서드 정의
    public static void Print(this string text)
    {
        Console.WriteLine(text);
    }
}
string name = "John";
name.Print();  // 확장 함수 사용

만약 this 키워드가 없다면?

// 정적 클래스

static class MyExtension
{
    // 일반 정적 메서드 정의
    public static void Print(string text)
    {
        Console.WriteLine(text);
    }
}
string name = "John";
// name.Print();  // 사용이 불가능해요!!!
MyExtension.Print(name); // 이렇게 사용해야 합니다.

그리고 this 다음에 나오는 타입이 int 라면 int 타입에 대해서 확장 함수가 사용이 가능합니다.

// 정적 클래스
static class MyExtension
{
    // int 타입에 대한 확장 메서드 정의
    public static bool IsEven(this int number)
    {
        return number % 2 == 0;
    }
}
int num = 4;
if (num.IsEven())
{
    Console.WriteLine($"{num}은(는) 짝수입니다.");
}
else
{
    Console.WriteLine($"{num}은(는) 홀수입니다.");
}

아래 코드는 사용이 불가능합니다.

string name = "John";
name.IsEven(); // 사용 불가능!!

 

이상입니다. ^^
또 궁금한 점이 있으시다면 언제든 질문 주세요. 감사합니다.

Lucas님의 프로필 이미지
Lucas
질문자

와우 감사합니다! 궁금증이 해결되었습니다! 👍

Lucas님의 프로필 이미지

작성한 질문수

질문하기