본문 바로가기

C#

C# 정적필드 사용하기

사진이 안보이신다면 https://blog.naver.com/turnbf/221381709811 에서 봐주세요.


정적 필드

오늘은 C# 정적 필드에 대해 공부해봤습니다.

정적 필드에대해 이해하기쉽게
생성자가 한번 호출될때마다 1씩 증가하는 count를 출력하는 프로그램을 만들었습니다.
먼저 정적 필드를 사용하기 전 실행화면,소스 입니다.

정적필드가 없는 실행화면
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 정적필드 { class NameF { public String name; public int count; public NameF(String _name) { //생성자 count++; name = _name; } } class Program { static void Main(string[] args) { NameF nameF = new NameF("홍길동"); Console.WriteLine(nameF.count); // 1번째 실행 NameF nameF2 = new NameF("푸길동"); Console.WriteLine(nameF.count); // 2번째 실행 } } }

정적필드를 사용하지 않는다면 위 실행화면처럼
count의 값은 1로만 출력됩니다.
이유는 클래스가 실행될때마다 count의 값이 0으로 초기화되기 때문입니다.
그래서 이같은 기능을 사용하기위해 필요한것이 정적 필드 입니다.

먼저 정적필드를 선언해줍니다. (참고 : NameF가 클래스)
count에 정적필드를 선언 할 것이니

public int count;

이 부분을

static public int count;

이렇게 바꿔줍니다.
static를 붙이면 정적 필드로 바뀝니다.

그 후

Console.WriteLine(nameF.count);

count 값을 출력해주는 console문을

Console.WriteLine(NameF.count);

(클래스명.카운트변수) 위와같이 바꿔줍니다.

그럼 아래와 같은 실행결과가 나옵니다.



정적필드 사용 후

정적필드를 사용하여 제가 원했던 값을 얻게되었습니다.

정적필드를 사용하면 값을 공유한다? 라는 식으로 이해하였습니다.
유니티에서도 전역변수를 사용하였는데 정적필드와 매우 닮아 이해하기 쉬웠습니다.

아래는 정적필드 사용 후 소스코드입니다.

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 정적필드 { class NameF { public String name; static public int count; public NameF(String _name) { count++; name = _name; } } class Program { static void Main(string[] args) { NameF nameF = new NameF("홍길동"); Console.WriteLine(NameF.count); // 1번째 실행 NameF nameF2 = new NameF("푸길동"); Console.WriteLine(NameF.count); // 2번째 실행 } } }




'C#' 카테고리의 다른 글

C# 정적 생성자 사용하기  (0) 2018.10.29
C#정적 메소드 사용하기  (0) 2018.10.29
C# 생성자 여러개 사용하기  (0) 2018.10.29
C# 생성자 사용하기  (0) 2018.10.29
C# 메소드 사용하기 (2)  (0) 2018.10.29