Меня задали вышеупомянутый вопрос в интервью. Вы могли объяснить различия? (производительность - память - использование - когда использовать который?)
Спасибо,
Erkan
Объявление статического класса документирует ваше намерение сделать этот класс набором статических функций, и любой, кто добавляет члены экземпляра, получит ошибку компиляции.
Нестатический класс со статическими членами обычно указывает, что класс разработан для создания экземпляра в какой-то момент. Статические методы этих классов обычно выполняют одно из двух:
Также, как упоминалось Уже сейчас методы расширения могут быть объявлены только в статическом классе.
Полагаю, вас спросили о различиях?
Статический метод в статическом классе может быть использован для определения метода расширения. Статический метод нестатического класса не может.
С точки зрения производительности и использования памяти; точно ничего. Наличие статического класса означает, что вы знаете , что экземпляров нет, но в версии 1.1 было достаточно частного конструктора. Используйте статический класс, если просто нет смысла иметь экземпляр! (служебные классы и т. д.)
Когда вы предоставляете служебные функции и все ваши методы являются статическими, я рекомендую вам использовать статические методы в статическом классе.
Если вы хотите предоставить служебные методы, которые работают только с вашим экземпляром, я рекомендую вам использовать статические методы в нестатическом классе. Например:
var myClass = MyClass.Create();
var myClass = MyClass.Parse("serialized.MyClass");