Construtores privados (Guia de programação em C#)
Um construtor privado é um construtor de instância especial. É geralmente usado em classes que contêm apenas membros estáticos. Se uma classe tiver um ou mais construtores privados e nenhum construtor público, outras classes (exceto classes aninhadas) não poderão criar instâncias dessa classe. Por exemplo:
class NLog
{
// Private Constructor:
private NLog() { }
public static double e = Math.E; //2.71828...
}
A declaração do construtor vazio impede a geração automática de um construtor sem parâmetros. Observe que, se você não usar um modificador de acesso com o construtor, ele ainda será privado por padrão. No entanto, o modificador privado é geralmente usado explicitamente para deixar claro que a classe não pode ser instanciada.
Os construtores privados são usados para impedir a criação de instâncias de uma classe quando não há campos ou métodos de instância, como a Math classe, ou quando um método é chamado para obter uma instância de uma classe. Se todos os métodos na classe forem estáticos, considere tornar a classe completa estática. Para obter mais informações, consulte Classes estáticas e membros de classes estáticas.
Exemplo
A seguir está um exemplo de uma classe usando um construtor privado.
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: {0}", Counter.currentCount);
// Keep the console window open in debug mode.
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
// Output: New count: 101
Observe que, se você descomentar a seguinte instrução do exemplo, isso gerará um erro porque o construtor está inacessível devido ao seu nível de proteção:
// Counter aCounter = new Counter(); // Error
Consulte também
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários