인프런 커뮤니티 질문&답변
정적 클래스, 확장 함수에서 매개변수로 this를 쓰는 이유?
해결된 질문
작성
·
143
퀴즈
70%나 틀려요. 한번 도전해보세요!
클래스와 객체의 관계를 가장 잘 설명하는 것은 무엇일까요?
클래스가 객체를 포함한다
클래스는 객체를 만들기 위한 설계도이다
객체는 클래스를 상속받는다
객체가 클래스의 기능을 정의한다
답변 1
1
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(); // 사용 불가능!!
이상입니다. ^^
또 궁금한 점이 있으시다면 언제든 질문 주세요. 감사합니다.






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