Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 정적(Static) 클래스란 무엇인가? 개념과 예제로 쉽게 이해하기

C# 정적 클래스의 기본 개념

C#에서 정적(static) 클래스는 인스턴스화(instantiation)할 수 없는 특수한 형태의 클래스입니다. 즉, new 키워드를 사용해 객체를 생성할 수 없으며, 오직 정적 멤버(static members)만 포함할 수 있습니다.

또한 정적 클래스는 자동으로 봉인(sealed) 상태가 되어 다른 클래스가 상속할 수 없으며, 인스턴스 생성자(instance constructor)를 가질 수 없다는 중요한 특징이 있습니다.

정적 클래스의 주요 특징

정리하면 C# 정적 클래스는 다음과 같은 특성을 가집니다:

- 인스턴스를 생성할 수 없습니다.
- 모든 멤버는 반드시 static으로 선언되어야 합니다.
- 암시적으로 sealed이므로 상속이 불가능합니다.
- 인스턴스 생성자를 포함할 수 없습니다.

C# 정적 클래스 예제 코드

아래 예제는 정적 클래스와 정적 멤버를 함께 사용하는 방법을 보여줍니다:

using System;

public static class Demo {
    public static float PI = 3.14f;
    public static int calc(int n){ return n*n; }
}

class Program {

    public static void Main(string[] args) {
        Console.WriteLine("PI: " + Demo.PI);
        Console.WriteLine("Square: " + Demo.calc(3));
    }
}

예제 코드 분석

위 코드에서 정적 클래스 부분은 다음과 같습니다:

public static class Demo {
    public static float PI = 3.14f;
    public static int calc(int n){ return n*n; }
}

그리고 이 클래스 내부에는 아래와 같은 정적 멤버들이 선언되어 있습니다:

public static float PI = 3.14f;
public static int calc(int n){ return n*n; }

Demo 클래스는 정적 클래스이기 때문에 객체를 만들지 않고도 클래스 이름을 통해 직접 Demo.PIDemo.calc(3)처럼 멤버에 접근할 수 있습니다. 실행 결과는 PI 값인 3.14와 3의 제곱값인 9가 출력됩니다.

정적 클래스를 활용하는 경우

정적 클래스는 주로 유틸리티 함수, 상수 값, 확장 메서드 컨테이너 등 프로그램 전반에서 공통으로 사용되는 기능을 묶어둘 때 유용합니다. 대표적인 예로 .NET의 System.Math 클래스가 있으며, 이 역시 별도의 인스턴스 생성 없이 Math.PI, Math.Sqrt() 등의 정적 멤버를 바로 사용할 수 있습니다.