Почему я не могу наследовать статические классы?
Цитата отсюда:
Это на самом деле дизайн.Кажется, нет веской причины наследовать статический класс.Он имеет открытые статические члены, к которым вы всегда можете получить доступ через само имя класса.Единственными причинами наследования статических объектов, которые я видел, были плохие, такие как сохранение пары символов при наборе текста.
Возможно, есть причина рассмотреть механизмы, позволяющие вводить статические элементы непосредственно в область видимости (и мыФакт, рассмотрим это после цикла продуктов Orcas), но наследование статического класса - не тот путь: это неправильный механизм, и он работает только для статических членов, которые находятся в статическом классе.
(Mads Torgersen, C # Language PM)
Другие мнения из channel9
Наследование в .NET работает только на базе экземпляров.Статические методы определяются на уровне типа, а не на уровне экземпляра.Вот почему переопределение не работает со статическими методами / свойствами / событиями ...
Статические методы хранятся в памяти только один раз.Для них не создано виртуальной таблицы и т. Д.
Если вы вызываете метод экземпляра в .NET, вы всегда указываете ему текущий экземпляр.Это скрыто во время выполнения .NET, но это происходит.Каждый метод экземпляра имеет в качестве первого аргумента указатель (ссылку) на объект, на котором выполняется метод.Этого не происходит со статическими методами (так как они определены на уровне типа).Как компилятор решит выбрать метод для вызова?
(littleguru)
И как полезная идея, у littleguru есть частичный «обходной путь» для этой проблемы: шаблон Singleton.
http://www.dofactory.com/Patterns/PatternSingleton.aspx