오늘은 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 |