프라이빗 생성자는 특수 인스턴스 생성자입니다. 일반적으로 정적 멤버만 포함하는 클래스에서 사용됩니다. 클래스에 하나 이상의 프라이빗 생성자가 있고 공용 생성자가 없는 경우 다른 클래스(중첩 클래스 제외)는 이 클래스의 인스턴스를 만들 수 없습니다. 다음은 그 예입니다.
class NLog
{
// Private Constructor:
private NLog() { }
public static double e = Math.E; //2.71828...
}
빈 생성자의 선언은 매개 변수가 없는 생성자의 자동 생성을 방지합니다. 생성자와 함께 액세스 한정자를 사용하지 않는 경우 기본적으로 프라이빗이 됩니다. 그러나 일반적으로 프라이빗 한정자는 클래스를 인스턴스화할 수 없음을 명확히 하기 위해 명시적으로 사용됩니다.
프라이빗 생성자는 클래스와 같은 Math 인스턴스 필드나 메서드가 없거나 클래스의 인스턴스를 가져오기 위해 메서드를 호출할 때 클래스의 인스턴스를 만드는 것을 방지하는 데 사용됩니다. 클래스의 모든 메서드가 정적이면 전체 클래스를 정적으로 만드는 것이 좋습니다. 자세한 내용은 정적 클래스 및 정적 클래스 멤버를 참조하세요.
예시
다음은 프라이빗 생성자를 사용하는 클래스의 예입니다.
public class Counter
{
private Counter() { }
public static int currentCount;
public static int IncrementCount()
{
return ++currentCount;
}
}
class TestCounter
{
static void Main()
{
// If you uncomment the following statement, it will generate
// an error because the constructor is inaccessible:
// Counter aCounter = new Counter(); // Error
Counter.currentCount = 100;
Counter.IncrementCount();
Console.WriteLine($"New count: {Counter.currentCount}");
// Keep the console window open in debug mode.
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
// Output: New count: 101
다음 문장의 주석을 해제하면 보호 수준 때문에 생성자에 접근할 수 없으므로 오류가 발생합니다.
// Counter aCounter = new Counter(); // Error
참고하십시오
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET