Как я могу предотвратить наследование класса в C #?

StackOverflow https://stackoverflow.com/questions/154698

  •  03-07-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

Другие советы

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

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

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

А sealed модификатор будет делать то, что final делает на Java.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top