C#에서 `static` 키워드는 클래스나 클래스 멤버(필드, 메서드 등)에 사용되며, 해당 멤버나 클래스가 객체 인스턴스에 속하지 않도록 선언할 때 사용합니다.
즉, 클래스 자체에 속하게 되어 모든 인스턴스에서 공유됩니다.
아래는 `static`의 주요 특징과 예시입니다.
정적 클래스 (Static Class)
* 클래스 자체가 정적일 경우, 그 클래스는 인스턴스화 할 수 없습니다.
* 모든 멤버가 자동으로 정적이 됩니다.
public static class MathUtility
{
public static int Add(int a, int b)
{
return a + b;
}
}
MathUtility 클래스는 인스턴스화가 불가능하며, `Add` 메서드는 다음과 같이 클래스명으로 바로 호출할 수 있습니다.
int result = MathUtility.Add(5, 3);
정적 메서드 (Static Method)
* 인스턴스와 무관하게 클래스에서 직접 호출할 수 있습니다.
* 정적 메서드는 클래스의 인스턴스를 생성하지 않아도 호출 가능합니다.
public class Calculator
{
public static int Multiply(int a, int b)
{
return a * b;
}
}
사용 예
int product = Calculator.Multiply(4, 5);
정적 필드 (Static Field)
* 클래스의 모든 인스턴스가 공유하는 필드를 선언할 때 사용합니다.
* 인스턴스를 여러 개 만들어도 해당 필드는 하나만 존재합니다.
public class Counter
{
public static int count = 0;
public Counter()
{
count++;
}
}
사용 예
Counter c1 = new Counter();
Counter c2 = new Counter();
Console.WriteLine(Counter.count); // 출력: 2
정적 생성자 (Static Constructor)
* 클래스가 처음으로 참조될 때 한 번만 호출됩니다.
* 주로 정적 필드를 초기화할 때 사용됩니다.
public class Logger
{
public static string logFilePath;
static Logger()
{
logFilePath = "/logs/app.log";
}
}
요약
* static 키워드는 클래스 또는 멤버가 인스턴스화되지 않고, 클래스 자체에 속하도록 만듭니다.
* 정적 필드, 메서드, 생성자는 인스턴스 없이도 사용할 수 있습니다.
static 선언은 인스턴스가 불필요한 경우 효율적이며, 프로그램 전반에서 공유되는 상태나 동작을 정의할 때 유용합니다.
'프로그래밍 > C#' 카테고리의 다른 글
Lazy<T> (1) | 2024.10.14 |
---|---|
싱글톤 (Singleton) (1) | 2024.10.14 |
event 그리고 delegate, Action (0) | 2024.10.12 |
Action (0) | 2024.10.12 |
Callback (1) | 2024.10.12 |