C#나 다른 대부분 객체지향언어는 객체가 생성될 때 초기화나 다른 일들을 할 수 있게 생성자를 작성할 수 있게 해줍니다. 그래서 클래스를 쓰는 입장에서는 새 객체를 만들기만 해도 그 객체의 접근가능한 변수나 속성들이 유효한 값을 갖고 있다고 생각할 수 있습니다. 하지만 정적 변수나 속성의 경우 선언과 동시에 하는 초기화도 제한이 있고, 객체를 만들기 전에 접근할 수 있기 때문에 원하는 값으로 미리 초기화하는 방법이 필요합니다. 정적 함수로 초기화 함수를 작성하여 클래스 사용전에 호출하는 방법도 있지만, 그 함수 호출을 빼먹을 위험성도 있습니다. 그래서 이 때 필요한게 static constructor인데요.. 사실 이미 자바에도 있는 내용입니다.. 문법까지 같은지는 기억은 안나지만..
이 문법은
static 클래스명()
{
}
이렇고 접근제한자를 쓸 수 없고, 파라미터를 받을 수도 없습니다.. {
}
using System;
using System.Collections.Generic;
static class Program
{
static Program()
{
IntList = new List<int>();
IntList.Add(1);
IntList.Add(3);
IntList.Add(5);
}
public static List<int> IntList { get; private set; }
static void Main()
{
foreach (int i in IntList)
{
Console.WriteLine(i);
}
}
}
using System.Collections.Generic;
static class Program
{
static Program()
{
IntList = new List<int>();
IntList.Add(1);
IntList.Add(3);
IntList.Add(5);
}
public static List<int> IntList { get; private set; }
static void Main()
{
foreach (int i in IntList)
{
Console.WriteLine(i);
}
}
}
'컴퓨터 프로그래밍' 카테고리의 다른 글
C# 컬렉션이나 배열의 랜덤 요소 고르기 (1) | 2010.06.06 |
---|---|
[C#] byte[] 를 구조체로 바꾸기 (0) | 2009.12.28 |
Media Player Plugin 제작하기 - 2 바로 제작 (0) | 2009.12.18 |