Решив сделать класс C # статичным - PullRequest
3 голосов
/ 05 октября 2011

Если у меня есть класс Utilities.cs в C #, который содержит только статические методы

например,

public static string DoSomething()
{
    return "something";
}

Должен ли я сделать сам класс статическим?

public static Utilities()
{
    ...

Есть ли у статического класса какие-либо преимущества?

Ответы [ 4 ]

11 голосов
/ 05 октября 2011

Да, вы должны.Это мешает людям создавать экземпляры класса, когда они не должны, и делает цель класса более ясной.Прочитайте страницу MSDN для получения дополнительной информации .

Вам также нужно пометить класс как статический, если вы хотите добавить Методы расширения

Вы должны тщательно продумать служебные классы.Подумайте, действительно ли методы принадлежат к этому, или есть более оригинальный способ сделать это.

Также посмотрите на этот вопрос и ответ Джона Скита.

6 голосов
/ 05 октября 2011

Основным преимуществом является то, что оно делает ваш дизайн более понятным и усиливает эти намерения.Например, вы не можете наследовать от статического класса (то есть специализировать его), и вы не можете создать его экземпляр (он фактически является одиночным).Они оба будут намерениями вашего класса утилит.

Однако статические классы и методы следует использовать с осторожностью, так как это затрудняет изменение поведения вашей программы.Статические классы и методы очень конкретны и не могут быть (легко) заменены, как в случае, если вы использовали интерфейсы и внедрение конструктора.Статические классы и члены могут быть полезны, но редко.Чрезмерное использование статики делает ваше программное обеспечение менее гибким и более сложным для тестирования.

1 голос
/ 05 октября 2011

Только этот статический класс не может содержать нестатические члены, поэтому вы не можете случайно добавить их.Также, как упоминалось в ответе Рэя, это сделает ваш код более понятным.

1 голос
/ 05 октября 2011

Да, вы должны сделать это статичным. Создание статичности предотвращает создание экземпляра. Он в первую очередь предназначен для того, чтобы сообщать человеку, использующему класс, что он содержит только статические методы, что способствует удобочитаемости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...