본문 바로가기
유니티 공부/C# 문법

C# 문법 - static

by 코딩하는 돼징 2023. 4. 11.
반응형

class - 붕어빵 틀

field - 붕어빵에 대한 정보

붕어빵이 같은 틀에 나왔다고 해도 붕어빵 마다 맛과 비율이 다른 것 처럼 각 인스턴스마다 다르다.

instance- 붕어빵

Pig pig = new Pig();
Pig pig2 = new Pig();
pig2.weight = 80; // 붕어빵에 대한 정보
Pig pig3 = new Pig();
pig3.weight = 110; // 붕어빵에 대한 정보

1. static

만약 static이라고 선언을 하면 age라는 필드는 인스턴스(붕어빵)에 종속되는 것이 아니라 class(붕어빵 틀)에 종속되는 것이다. 그러므로 age의 값은 인스턴스가 만들어질때 다 같은 값으로 만들어지게 된다.

즉, 오로지 1개만 존재한다.

static public int age;

2. static이 필요한 이유

인스턴스에 고유한 값을 부여하는 경우

class Pig
{
    static public int count = 1;
    public Pig()
    {
    	id = count;
    	count++;
        Console.WriteLine($"내 id 번호 : {id}");
}
static void Main(string[] args)
{
	Pig pig = new Pig();
	Pig pig2 = new Pig();
	Pig pig3 = new Pig();
}


3. 함수에 사용되어지는 static

함수에 static을 사용하면 유일성이 보장된다.

01 static을 함수에서 사용하는 이유

static 함수에서는 필드 값에 접근할 수 없다.


02 오류가 나는 이유 

Piggy 함수는 Pig class에 종속되어 있는 공용 함수이다.  그러므로 공용 함수는 각각 개개인의 고유한 정보에 접근할 수 없기 때문이다. weight값은 객체마다 값이 다 다를 수도 있는데 어떤 객체의 weight인지 알 수 가 없기 때문에 static 함수 안에서는 static 변수만 연산을 할 수 있다.


4. static함수가 인스턴스에 접근하는 방법

static public Pig createPig()
{
	Pig pig = new Pig();
	pig.weight = 110;
	pig.name = "piggy";
	return pig;
}

static은 class에 종속되어 있기 때문에 함수 호출이 다르다.

일반 함수는 객체에서 함수를 호출하는데 static 함수는 class에 종속되어 있으므로 바로 클래스에서 접근하여 호출 할 수 있다.

01 static 함수 호출

Pig pig = Pig.createPig(); // static 함수 createPig()

 

Console.WriteLine();


02 일반 함수 호출

pig.Eat(); // 일반 함수 Eat()

rand.Next();

 

 

 

 

본 게시글은 MMORPG Part1을 수강하고 정리한 글입니다.

https://www.inflearn.com/course/%EC%9C%A0%EB%8B%88%ED%8B%B0-mmorpg-%EA%B0%9C%EB%B0%9C-part1/dashboard

반응형

'유니티 공부 > C# 문법' 카테고리의 다른 글

C# 문법 - 은닉성(public, protected, private)  (0) 2023.04.12
C# 문법 - 상속성  (0) 2023.04.11
C# 문법 - this 키워드  (0) 2023.04.11
C# 문법 - 생성자  (0) 2023.04.11
C# 문법 - 스택과 힙  (0) 2023.04.11

댓글