1. Зачем? - Тип не может иметь конструктор как таковой, как обычно думают о конструкторах в экземплярах. В общем, его иногда называют методом «статического инициализатора», но Microsoft использует терминологию «конструктор типов» (и он имеет особые ограничения) - вы помещаете в него код для инициации типа / класса - если это был конструктор экземпляра, это может быть перегружен. Это статическое ограничение на «конструктор типов» связано с тем, что .NET CLR отвечает за загрузку шаблона класса в куче и не позволяет указывать параметры при таких обстоятельствах (потому что, как бы вы ни передавали аргументы). Поскольку в самом строгом смысле программист не несет ответственности за вызов конструктора типа, было бы бессмысленно позволять программисту кодировать статический деструктор, когда он больше находится в домене CLR. В конечном итоге CLR удалит шаблон класса из кучи, но время жизни шаблона класса будет длиннее, чем его экземпляров, поэтому вам все равно не придется делать в нем что-либо ресурсоемкое (например, удерживайте открытым соединение БД).
2. Какие? - Синглтон
Если вы столкнулись с ситуацией, когда вам кажется, что вам нужно открыть ресурс в шаблоне класса и впоследствии уничтожить его, вы можете рассмотреть шаблон программного обеспечения Singleton , чтобы иметь только один экземпляр этого класса, и, возможно, также реализовать System.IDiposable интерфейс для помощи в очистке, в дополнение к деструктору. (Я вижу, что кто-то уже опередил меня с примером кода IDisposable, поэтому я закончу свое решение здесь.)