정적 클래스, 확장 함수에서 매개변수로 this를 쓰는 이유?
안녕하세요 🙂
확장 함수 부분 설명해 주실 때 매개변수로 this string text 를 쓰셨는데, this가 왜 입력 되었는지 궁금합니다.
앞선 강의에서 setter 할 때 this 키워드가 클래스의 멤버임을 증명하는데 쓰이는 것 같은데, 여기서도 단순 그런 역할 인지요?
답변 1
1
안녕하세요~ 정적 클래스의 "첫 번째 매개변수"에 사용되는 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(); // 사용 불가능!!
이상입니다. ^^
또 궁금한 점이 있으시다면 언제든 질문 주세요. 감사합니다.
UI있는 Designer 오류 발생 질문입니다.
0
73
2
CancelationTokenSource 질문이있습니다.
0
52
2
비동기 2강 UI가 없는 환경 질문입니다.
0
67
1
16_Collection 에서 Stack_ 후입선출에 질문입니다.
0
59
2
꼭 vs2022 로 다운받아야 하나요?
1
116
2
공부 문의드립니다,,
0
77
2
똑같이 따라서 ^1 했는데 에러가 떠요.
0
69
1
영상 구문 그대로 따라했는데 에러가 나요.
0
56
1
30강 듣고 질문이있습니다.
0
63
1
오늘 첫 강의를 들었습니다.
0
81
2
159번 강의 보는데 궁금한게 있습니다
0
63
3
asp.net blazor 강의는 현재 계획없으신가요
0
78
2
강의자료
1
171
2
메소드 호출이 되는이유?
0
77
1
~ 연산자 이해가 안되요
0
166
5
thread join 사용
0
178
4
블로그 글
0
108
2
Delegate 내용은 어디서 다루나요?
0
107
2
Xunit private 메서드 테스트
0
121
2
자원정리 개념
0
113
2
강의 영상 오류
0
89
1
this string text의 동작 과정이 궁금합니다.
0
128
2
type변환 as에서 string과 int, int? 차이 질문입니다.
0
199
2
접근 제어자로 필드를 만들어 파생 클래스에서 사용할 때 질문입니다.
0
115
2





