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 파일로 코딩하다 보니, 어떻게 활용해야 할지 아직은 감이 안 온다.
하지만 협업 상황이나 코드를 분리해서 작업할 때, 사용할 기회가 생길 것 같다.