Да, вы можете вызывать статический метод, не создавая экземпляр класса.
Статический метод - это просто метод, связанный с самим типом, а не с экземпляром типа. (Это относится и к структурам.) То же самое относится и к статическим полям - опять же, они связаны с типом, а не с одним конкретным экземпляром типа. Название «static» несколько неудачно с точки зрения того, что оно не очень хорошо описывает концепцию - ключевое слово VB «Shared» лучше в некоторых способах, хотя подразумевает, что оно совместно используется между all экземпляры, а не связанные с любым экземпляром. (Статические члены доступны независимо от того, были ли созданы экземпляры когда-либо или нет.)
Действительно, статические методы часто используются в качестве альтернативы конструкторам - например, Encoding.GetEncoding
. Это позволяет им возвращать кэшированные экземпляры, возвращать ноль, если это особенно полезно, или выполнять дополнительную работу до / после кода конструктора.