Почему используются статические классы?
У меня есть сомнения по статическому классу и статическим методам. Из MSDN я понял, что "Статические классы и члены класса используются для создания данных и функций, к которым можно получить доступ, не создавая экземпляр класса".
Поэтому, если мы не хотим связывать класс над экземпляром, мы сделаем его статичным. Это единственное преимущество? Может ли кто-нибудь вести меня, в каком сценарии в реальном времени мы ищем статический класс.
Некоторое время в классах (не статично) я нахожу статические методы. Какое преимущество преимущество/преимущество делают статические методы, которые дают практические методы экземпляра.
Ответы
Ответ 1
Для служебных классов они великолепны. Как вы упомянули, они похожи на глобальное государство. Поэтому для классов, которые не имеют состояния, для преимуществ производительности класс должен быть статическим.
С другой стороны, статические классы трудно проверить (если они содержат состояние). Полиморфизм и другие концепции ОО также теряются.
Используйте разумно.
Ответ 2
Применение статического ключевого слова к классу является языком С#, это не означает ничего особенного для CLR. Он просто гарантирует, что все члены также статичны и что вы не можете случайно создать экземпляр класса с новым ключевым словом.
Достоинства статических методов обсуждаются в этой теме.
Ответ 3
Статические классы ИМО - это маскирование процедурного программирования. Не обязательно плохо, но это не очень OOPly. Следите за функциональным антикоммутатором декомпозиции.
Ответ 4
Статические классы отлично подходят для определения статических методов. Это классический подход "полезного класса". Однако будьте предельно осторожны с сохранением состояния (т.е. Определяющих полей) в статическом классе. В нашем многопоточном мире это может привести к непредсказуемому поведению программы, если вы не синхронизируете доступ к статическим полям.
Ответ 5
Статические свойства, используемые главным образом для введения Контекста запуска кода.
И вы можете найти подтверждение этого в каждой части стека .NET.
ASP.NET - HttpContext.Current
Threading - Thread.CurrentThread
WinForms - WindowsFormsSynchronizationContext.Current
WPF - Диспетчер
и т.д.
статический класс для меня - это просто контейнер для служебных методов.
Ответ 6
Статические классы глобализуют определенную переменную, которая упрощает обработку во время кода.
Следовательно, на базовом уровне мы предпочитаем использовать статические классы.