Надеюсь, я понял концепцию статических классов (спасибо Джону Скиту и его ответ на мой другой вопрос). Кроме того, меня только интересует, почему в MSDN они не показывают консоль как типичный статический класс. Или Console в этом смысле особенная?
Консоль C # (пояснение статического класса)
Ответы (3)
Консоль - это статический класс. Для каждого приложения может быть только одна консоль. Когда вы вызываете методы в классе Console, используется этот единственный класс Console. То же самое верно для любого статического типа или статического члена. Static-something не может иметь несколько экземпляров в одном приложении / домене приложения.
System.Console
не статичен?
- person Andrew Barber; 19.10.2010
System.Console не была изначально объявлен как static
, потому что он существует с .NET 1.1, который не поддерживает статические классы, а только статические члены.
Если вы спрашиваете «почему это не статический класс» - это статический класс:
public static class Console
Но если вы спросите, почему он не используется в качестве полезного примера статического класса:
.. почему в MSDN они не показывают консоль как типичный статический класс ...
Базовая документация по API (включая для класса Console) на В MSDN основное внимание уделяется механике каждой функции и небольшому примеру синтаксиса и кода, которые вы могли бы написать для использования этой функции. Он описывает возможности, предоставляемые каждой функцией или классом. Он описывает программные контракты, включая пространство имен и сборки, от которых зависит функция, списки членов, возвращаемые значения, ожидаемые диапазоны ввода, обработка ошибок и родительские классы в иерархии наследования.
Эта документация не фокусируется на том, как каждая функция вписывается в экосистему архитектуры программирования, или на передовых методах программирования. Часто в нем не упоминаются альтернативные варианты или компромиссы, связанные с использованием этой функции. Действительно, многие примеры в документации API являются примерами плохих практик программирования, а некоторые из них даже не компилируются.
В MSDN есть и другие разделы, которые касаются архитектурных проблем, передовых методов программирования и примеров того, почему функция была полезна для платформы .NET (например, Безопасные дескрипторы и шаблон Dispose). Может быть, вы просто не нашли (или нет) статьи о статических классах, их использовании и существующих примерах во фреймворке?
Однако, устраняя этот недостаток, похоже, что эта статья могла бы быть полезной, особенно если она раскрывает плохие практики, с которыми легко столкнуться при программировании со статическими классами (сильная связь, трудности в их тестировании и трудности с реализацией параллелизма).
System.Console
- это статический класс, да. - person Andrew Barber   schedule 19.10.2010