Почему используются статические классы?

У меня есть сомнения по статическому классу и статическим методам. Из MSDN я понял, что "Статические классы и члены класса используются для создания данных и функций, к которым можно получить доступ, не создавая экземпляр класса".

Поэтому, если мы не хотим связывать класс над экземпляром, мы сделаем его статичным. Это единственное преимущество? Может ли кто-нибудь вести меня, в каком сценарии в реальном времени мы ищем статический класс.

Некоторое время в классах (не статично) я нахожу статические методы. Какое преимущество преимущество/преимущество делают статические методы, которые дают практические методы экземпляра.

Ответ 1

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

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

Используйте разумно.

Ответ 2

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

Достоинства статических методов обсуждаются в этой теме.

Ответ 4

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

Ответ 5

Статические свойства, используемые главным образом для введения Контекста запуска кода. И вы можете найти подтверждение этого в каждой части стека .NET.
ASP.NET - HttpContext.Current
Threading - Thread.CurrentThread
WinForms - WindowsFormsSynchronizationContext.Current
WPF - Диспетчер
и т.д.
статический класс для меня - это просто контейнер для служебных методов.

Ответ 6

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