C#에서 확장 메서드, 정적 클래스, 그리고 static 키워드는 서로 연관된 개념이지만 각각 고유한 역할을 합니다. 아래에서 이들의 정의, 사용법, 차이점, 그리고 상호작용에 대해 정리하겠습니다.
using System;
namespace ExtensionMethodExample
{
public static class StringExtensions // 정적 클래스
{
public static bool IsNullOrEmpty(this string value) // 확장 메서드
{
return string.IsNullOrEmpty(value);
}
}
class Program
{
static void Main()
{
string text = null;
// 확장 메서드 사용
bool result = text.IsNullOrEmpty();
Console.WriteLine($"IsNullOrEmpty: {result}"); // 출력: IsNullOrEmpty: True
}
}
}
text.IsNullOrEmpty()와 같이 string 함수처럼 사용이 가능합니다.public static class Utility
{
public static void PrintMessage()
{
Console.WriteLine("Hello, Static Class!");
}
}
// 호출 예제
Utility.PrintMessage(); // 인스턴스 생성 없이 사용
public static class MathHelper
{
public static int Add(int a, int b)
{
return a + b;
}
}
class Program
{
static void Main()
{
int result = MathHelper.Add(3, 5); // 정적 클래스의 정적 메서드 호출
Console.WriteLine(result); // 출력: 8
}
}
public static class StringExtensions
{
public static string ToUpperWithExclamation(this string value)
{
return value.ToUpper() + "!";
}
}
// 호출
string message = "hello".ToUpperWithExclamation();
Console.WriteLine(message); // 출력: HELLO!
// 정적 필드 예제
public class Counter
{
public static int Count = 0;
public static void Increment()
{
Count++;
}
}
class Program
{
static void Main()
{
Counter.Increment();
Console.WriteLine(Counter.Count); // 출력: 1
}
}