如何避免在C#中继承类?

时间:2020-03-06 14:56:37  来源:igfitidea点击:

在Java中,我可以使用'final'关键字进行此操作。我在C#中看不到"最终"。有替代品吗?

解决方案

我们正在寻找sealed关键字。它与Java中的final关键字完全一样。尝试继承将导致编译错误。

正如乔尔已经建议的那样,我们可以在C#中使用"密封"而不是"最终"。

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

还应注意,"我认为没有人会需要继承"不是使用"密封"的充分理由。除非我们有特定的需求要确保使用特定的实现,否则请不要密封该类。

可以使用sealed关键字,但是仍然可以使用反射IIRC从该类派生。

sealed修饰符将执行final在Java中的作用。

另外,尽管在这种情况下这可能不是我们想要的,但将类标记为"静态"也可以防止其被继承(它在幕后被密封)。