static
и public
являются ортогональными понятиями (т.е. они не имеют ничего общего друг с другом).
public
просто означает, что пользователи класса могут вызывать этот конструктор (какв противоположность, скажем, private
).
static
означает, что метод (в данном случае конструктор) принадлежит не экземпляру класса, а «самому классу».В частности, статический конструктор вызывается один раз , автоматически, когда класс используется впервые.
Кроме того, статический конструктор нельзя сделать public
или private
, посколькуего нельзя вызвать вручную;он вызывается только самой средой выполнения .NET, поэтому пометить его как public
не имеет смысла.