Section 42.3: Static 키워드
static
키워드는 두가지 의미를 가진다:
- 각 객체 (object) 별로 다른 값을 가지는 것이 아닌, 클래스 전체에 대해 동일한 값을 가지게 된다.
- 정적 (static) 속성값과 메소드들은 별도의 인스턴스를 필요로 하지 않는다.
public class Foo {
public Foo {
Counter++;
NonStaticCounter++;
}
public static int Counter {
get;
set;
}
public int NonStaticCounter {
get;
set;
}
}
public class Program {
static void Main(string[] args) {
// 인스턴스를 생성한다.
var foo1 = new Foo();
Console.WriteLine(foo1.NonStaticCounter); // 출력값은 "1" 이 될 것이다.
// 다음 호출이 인스턴스에 대한 접근이 아닌 클래스 이름에 대해 이루어짐에 유의한다.
Console.WriteLine(Foo.Counter); // 출력값은 "1" 역시 이 될 것이다.
// 두번째 인스턴스를 생성한다.
var foo2 = new Foo();
Console.WriteLine(foo2.NonStaticCounter); // 출력값은 "1" 이 될 것이다.
Console.WriteLine(Foo.Counter); // 이제 출력값은 "2" 가 될 것이다.
// 정적 속성값은 두 인스턴스 모두에서 증가되어 있으며, 이는 전체 클래스상에 지속적으로 유지될 것이다.
}
}
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.
[출처] https://books.goalkicker.com/CSharpBook/
반응형
'번역 > C# Notes for Professionals' 카테고리의 다른 글
43.2: Lazy<T> 를 이용한 지연된 (lazy) 방식의 스레드-안전한 Singleton (0) | 2022.05.19 |
---|---|
43.1: 정적 (static) 초기화 방식의 Singleton (0) | 2022.05.19 |
42.2: 정적 (Static) 클래스의 수명 (lifetime) (0) | 2022.05.19 |
42.1: 정적 (Static) 클래스 (0) | 2022.04.27 |
41.7: 명시적 구현 (Explicit Implementation) 을 이용해 멤버를 숨김 처리하기 (0) | 2022.04.26 |