Консоль C # (уточнение статического класса) - PullRequest
0 голосов
/ 19 октября 2010

Надеюсь, я понял концепцию статических классов (спасибо Джону Скиту и его ответу на другой мой вопрос). Кроме того, меня интересует только то, почему на MSDN они не показывают Console как типичный статический класс. Или Console - это что-то особенное в этом смысле?

Ответы [ 3 ]

2 голосов
/ 19 октября 2010

Консоль является статическим классом. В приложении может быть только одна Консоль. Когда вы вызываете методы класса Console, используется этот единственный класс Console. То же самое верно для любого статического типа или статического члена. Статическое-ничто не может иметь несколько экземпляров в одном приложении / домене приложения.

0 голосов
/ 19 октября 2010

System.Console изначально не был объявлен как static, поскольку существует с .NET 1.1, который не поддерживает статические классы, только статические члены.

0 голосов
/ 19 октября 2010

Если вы спрашиваете «почему это не статический класс» - это статический класс:

public static class Console

Но если вы спрашиваете, почему он не используется как полезныйпример статического класса:

.. почему в MSDN они не отображают Консоль как типичный статический класс ...

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

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

В MSDN есть и другие области, которые касаются архитектурных проблем, передовых методов программирования и примеров того, почемуфункция была полезна для .NET Framework (например, Safe Handles и шаблон Dispose ).Может быть, вы просто не нашли (или нет) статьи, относящейся к статическим классам, их использованию и существующим примерам в фреймворке?

Тем не менее, кажется, что это может быть полезностатья, особенно если в ней рассматриваются плохие практики, которые легко могут быть применены при программировании со статическими классами (сильная связь, трудности в их тестировании и трудности с реализацией параллелизма).

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