본문 바로가기

Library/.NET Framework with C#

C#에서의 static 키워드

C#에서의 static 키워드가 의미하는 바는, C/C++과 중요한 차이점이 있다.

static이란 키워드는, C#이나 C/C++이나 저장 형태를 의미하는 것은 동일하며, 프로그램이 생성될 때 단 한번만 생성된다는 점은 동일하다. C/C++의 클래스, 데이터멤버, 메서드 등에 static이 쓰였다면 이것은 클래스가 인스턴스화 되기 전이나, 되고 난 다음 언제라도 이 멤버들에 접근할 수 있지만, C#에서 static으로 선언된 메서드나 필드들은, 반드시 인스턴스가 아닌, 클래스 자체에 접근해서 호출해야 한다.

C#에서 Dummy라는 클래스가 선언되었다고 하자. 그리고, Dummy 클래스에서 static으로 StaticMethod()라는 메서드가 선언되었다면, 다음과 같은 호출은 허용되지 않으며, 클래스 자체에 접근해서 호출해야 한다.

Dummy d = new Dummy();
d.StaticMethod(); // 허용되지 않음

C#에서 static으로 선언된 메서드를 호출하려면, Dummy.StaticMethod()의 형태로 호출해야 한다.