статья MSDN для этой темы Ограничивающая Расширяемость путем Изоляции Классов .
Классы должны или быть разработаны для наследования или запретить его. Существует стоимость для разработки для наследования:
Объект, 17 из Эффективного Java вдаются в большее количество подробностей об этом - независимо от того, что это записано в контексте Java, совет относится к.NET также.
Лично мне жаль, что классы не были изолированы по умолчанию в.NET.
Я нашел это предложение в документации MSDN: "Запечатанные классы, прежде всего, используются для предотвращения деривации. Поскольку они никогда не могут использоваться в качестве базового класса, некоторая оптимизация во время выполнения может сделать звонящих участников запечатанного класса немного быстрее".
я не знаю, является ли производительность единственным преимуществом запечатанных классов, и лично я также хотел бы знать любые другие причины...
Производительность является важным фактором, например, строковый класс в Java является окончательным (< - изолированный), и причиной этого является производительность только. Я думаю, что другой важный момент должен избежать хрупкой проблемы базового класса, описанной подробно здесь: http://blogs.msdn.com/ericlippert/archive/2004/01/07/virtual-methods-and-brittle-base-classes.aspx
, Если Вы служите основой, это важно для устаревших проектов пригодности для обслуживания и обновить Вашу платформу для предотвращения хрупкой проблемы базового класса
Изоляция позволяет Вам понимать некоторое незначительное увеличение производительности. Это менее верно в мире МОНЕТ В ПЯТЬ ЦЕНТОВ и ленивого pessimization, чем в мире скажем C++, но так как.NET не так хороша как pessimization, как компиляторы Java главным образом из-за различных принципов проектирования, это все еще полезно. Это говорит компилятору, что может непосредственно назвать любые виртуальные методы, а не назвать их косвенно через vtable.
также важно, когда Вы хотите 'закрытый мир' для вещей как сравнение равенства. Обычно, как только я определяю виртуальный метод, я в значительной степени полит из шланга для определения понятия сравнения равенства, которое действительно реализовывает идею. С другой стороны, я мог бы быть в состоянии определить его для конкретного подкласса класса с виртуальным методом. Изоляция того класса гарантирует, что равенство действительно содержит.