Что лучше: публичный статический класс со статическими методами или публичный класс со статическими методами? - PullRequest
3 голосов
/ 14 января 2012

Относительно объявления класса класса public, пожалуйста, посмотрите на эти две части кода:

public class Helper
{
    public static void CallMeganFox(string phoneNumber)
    { //...

и

public static class Helper
{
    public static void CallMeganFox(string phoneNumber)
    { //...

Что лучше использовать и почему?

Ответы [ 2 ]

4 голосов
/ 14 января 2012

Теоретически "лучше" сделать явным, что этот класс не должен создаваться экземпляром, если сделать его static (второй вариант), поскольку он сообщает намерение ¹.

Однако в таком простом случае с практической точки зрения разница будет абсолютно нулевой2.Никто не собирается смотреть на этот класс и пытаться создать его экземпляр.

¹ Как отмечает Коди Грей, он также может помочь вам раньше обнаружить ошибки (например, забыть создать вспомогательный метод static).Хотя эта точка зрения, безусловно, имеет свои достоинства, опять же практическое различие будет незначительным: компилятор будет жаловаться, как только вы попытаетесь вызвать метод статически в любом случае.

² На самом деле, это не всегда так.Например, компилятор C # не позволит вам определять методы расширения в не static классе - не потому, что это невозможно, а потому, что он хочет подтолкнуть вас к «лучшей практике».

1 голос
/ 14 января 2012

static класс не может иметь нестатических методов. Если это то, что вы хотите - используйте это.

Более подробную информацию можно найти в этом вопросе и ответах.

...