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

Одной из возможных проблем является использование вами функции tan : тригонометрические функции, такие как tan, работают с использованием угловых значений, выраженных в радианах , а не в градусах.

Таким образом, вам нужно изменить:

coneradius = coneheight * Tan(coneangle)

на:

coneradius = coneheight * Tan(pi * (coneangle / 180#))

Использование градусов не приведет к ошибке функции (так как вы все еще вводите числовое значение ), но значение будет интерпретировано в радианах и, следовательно, даст неожиданные результаты (например, 15 градусов будет интерпретировано как 15 радиан = 139,4 градуса).

7
задан palmsey 30 September 2008 в 20:01
поделиться

5 ответов

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

35
ответ дан 6 December 2019 в 04:56
поделиться

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

6
ответ дан 6 December 2019 в 04:56
поделиться

Как Joel, уже рекомендуемый, можно использовать sealed вместо final в C#.

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

2
ответ дан 6 December 2019 в 04:56
поделиться

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

0
ответ дан 6 December 2019 в 04:56
поделиться

sealed модификатор сделает что final делает в Java.

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

1
ответ дан 6 December 2019 в 04:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: