본문 바로가기

공부,개발 팁

정적필드

정적필드: 인스터스멤버는 new로 객체를 생성할떄 객체마다 고유의 메모리에 할당됨 

즉 각각의 메모리에 할당이됨 하지만 정적필드를 사용하면 같은 메모리에 할당이됨
static 예약어를 사용하면 정적필드로 사용가능

[클래스].[정적필드]를 쓰면 전역적으로 호출가능
 

아래는 클래스의 객체가 생성될 떄마다 횟수를 증가시키는 즉 전역적으로 값이 유지되게 출력하는 코드이다
class Person
{
    static public int CountOfInstance;  // 정적 필드
    public string _name;  //인스턴스 필드

    public Person(string name)//생성자
    {
        CountOfInstance++;
        _name = name;
    }
}
class Program
{
    static void Main(string[] atgs) 
    {
        Console.WriteLine(Person.CountOfInstance);//정적 필드 호출 0이 호출

        Person person1 = new Person("홍길동");

           //인스턴스 생성 CountOfInstance++;가 실행되어 값은 1됨(위에서 한번 실행되서)


        Person person2 = new Person("홍길순");

           //또 한번 인스턴스가 생성되고 CountOfInstance++;가 실행되어 값은 2됨

        Console.WriteLine(Person.CountOfInstance);//정적 필드 호출 2가 출력됨
    }
}

인스턴스 필드로 했을경우 new로 항당받은 객체마다

각각의 메모리를 확보하기 떄문에 0 0이 출력됬을 것이다

 

하지만 정적필드로 사용 할 경우 하나에 메모리를 사용해 전역적으로 값이 유지가 되어

위에 코드처럼 값이 유지가 되어 유지된 값이 출력됨

'공부,개발 팁' 카테고리의 다른 글

Main 메서드  (0) 2019.10.02
싱글톤  (0) 2019.10.02
생성자와 종료자  (0) 2019.10.02
필드와 메서드  (0) 2019.10.02
c#) 클래스와 객체  (0) 2019.10.02