프로그래밍/C#

static 선언

selinatsu 2024. 10. 13. 23:31
반응형

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