Одной из возможных проблем является использование вами функции tan
: тригонометрические функции, такие как tan
, работают с использованием угловых значений, выраженных в радианах , а не в градусах.
Таким образом, вам нужно изменить:
coneradius = coneheight * Tan(coneangle)
на:
coneradius = coneheight * Tan(pi * (coneangle / 180#))
Использование градусов не приведет к ошибке функции (так как вы все еще вводите числовое значение ), но значение будет интерпретировано в радианах и, следовательно, даст неожиданные результаты (например, 15 градусов будет интерпретировано как 15 радиан = 139,4 градуса).
Вы ищете sealed
ключевое слово. Это делает точно что final
ключевое слово в Java делает. Попытки наследоваться приведут к ошибке компиляции.
Также знайте, что "Я не думаю, что кто-либо должен будет когда-либо наследоваться этому", не серьезное основание использовать "изолированный". Если у Вас нет определенной потребности гарантировать, что конкретная реализация используется, оставьте класс распечатанным.
Как Joel, уже рекомендуемый, можно использовать sealed
вместо final
в C#.
http://en.csharp-online.net/CSharp_FAQ:_Does_CSharp_support_final_classes
sealed
ключевое слово работало бы, но тем не менее можно произойти из класса с помощью отражательного IIRC.
sealed
модификатор сделает что final
делает в Java.
Кроме того, хотя это, вероятно, не то, что Вы ищете в этой ситуации, отмечая класс как static
также мешает ему быть наследованным (это становится изолированным негласно).