C# 에서의 Static(정적)

2023. 5. 8. 01:26C# 프로그래밍 개념

Static 변수를 정적 멤버변수라고 한다. 일반적인 멤버변수와는 다르게 객체화를 하지 않고도 쓸 수 있다

 

그 사용법은 static 클래스의 이름만으로 사용이 가능하다.

 

또한, 객체 하나하나의 것이 아니라 모두가 알고 싶은 걸 제시할 경우에 쓴다. ex) Console.WriteLine();

 

정적 멤버변수는 객체에 귀속된 것이 아니라 클래스 그 자체에 귀속된 것이고, 메모리에서는 데이터 영역에 올라가게 된다.

멤버변수라고 하는 애들은 각각 존재한다. 플레이어를 3new하면 플레이어가 3개 생긴 것이다. static객체화를 전혀 하지 않고(count) 사용할 수 있는 정적 멤버변수/함수/클래스다.

 

프로그램 내에서 하나만 존재하고 일반적으로 클래스 내부에서 모든 객체가 공유하는 변수를 만들 때 static을 사용한다. 또한, 객체화가 필요하지 않으니까 메모리 공간을 효율적이게 쓸 수도 있다.

 

정적 static void Main 함수도 클래스에 속한 정적 함수이다. public인 멤버변수도 객체를 만들어서 그걸 레퍼런스로 받고, .을 누르면 뒤에 자동 완성이 되는 식으로 된다.

 

static 함수는 클래스명을 입력하고 점만 뒤에 입력해도 입력이 가능. 새롭게 객체를 만들 필요가 없다. 그 클래스에 속하지만 객체를 따로 만들지 않고도 쓸 수 있는 게 정적 멤버함수이다. 

 

static의 장점은 접근 제한 지정자에서 자유롭다. 객체화를 하지 않고 클래스 내부에서 private로 정의한 멤버변수도 불러와서 쓸 수 있다. 어차피 자기 클래스 안에 있는 것이니까 가져다 쓸 수 있게 된다.

예를 들면, 이런 식으로 HP, AT는 private로 선언되어 있지만, static 멤버 함수에서 HP, AT를 사용할 수 있게 된다.

 

정적 메인 함수:  떤 클래스에 존재하는 Main이라는 이름을 가진 정적 멤버함수에서부터 C# 프로그램이 시작된다. 어떤 클래스 안에 정적인 값을 리턴하지 않는 메인 함수가 있다는 의미가 된다.

 

Console.WriteLine을 예로 들면 WriteLine도 정적 멤버 함수다.

Console.WriteLine() = 점만 찍어서 쓸 수 있으니까 정적 멤버함수다. 얘는 객체화를 하지 않고도 사용할 수 있다. 클래스명 입력하고 점 누르면 되니까 정적 멤버 함수 임을 알 수 있다. Console이 클래스 명.

 

Static class: 정적 멤버변수와 정적 멤버함수만을 가질 수 있는 정적 클래스다. 정적 클래스에 그냥 int i = 0; 이런 식으로 선언하면 에러가 난다. 일반 멤버변수는 선언만 해도 에러가 생긴다.

 

정적 멤버변수 / 정적 멤버함수 / 정적 클래스를 알아 두면 좋다.

'C# 프로그래밍 개념' 카테고리의 다른 글

C# Partial 활용  (0) 2023.05.09
C# while문 / for문 / if문 / switch문  (0) 2023.05.08
C#의 메모리(함수까지)  (1) 2023.05.08
C# 연산자  (0) 2023.05.07
for과 foreach 비교  (0) 2023.05.06