Как я могу сохранить класс от наследования в C #? - PullRequest
7 голосов
/ 30 сентября 2008

В Java я мог бы сделать это с ключевым словом 'final'. Я не вижу «финал» в C #. Есть ли замена?

Ответы [ 5 ]

35 голосов
/ 30 сентября 2008

Вы ищете ключевое слово sealed. Он делает именно то, что делает ключевое слово final в Java. Попытки наследования приведут к ошибке компиляции.

6 голосов
/ 01 октября 2008

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

2 голосов
/ 01 октября 2008

Как уже советовал Джоэл, вы можете использовать sealed вместо final в C #.

http://en.csharp -online.net / CSharp_FAQ: _Does_CSharp_support_final_classes

1 голос
/ 01 октября 2008

Модификатор sealed будет делать то же, что final в Java.

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

0 голосов
/ 01 октября 2008

Ключевое слово sealed будет работать, но вы все равно можете получить его из класса, используя отражение IIRC.

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