gpt4 book ai didi

.net - 为什么.Net中存在 'sealed'关键字?

转载 作者:行者123 更新时间:2023-12-02 20:11:55 24 4
gpt4 key购买 nike

.Net 框架中的大量类被标记为“密封”,阻止您用自己的类继承这些类。当然,这违背了面向对象的本质,在面向对象中您可以扩展和重新定义现有对象的行为。

“sealed”关键字的存在有充分的理由吗?

As an example, NotifyCollectionChangedEventArgs in Silverlight is sealed. I wanted to create my own version of ObservableCollection that supported AddRange and RemoveRange, but the Silverlight version of NCCEA doesn't provide a constructor that supports multiple items for the NewItems and OldItems properties, which are already defined as ILists. Usually, I'd just extend the class with my own variant that overrode the NewItems and OldItems properties, but in this case I can't and I can see no reason why that should be the case.

最佳答案

将类(或框架)设计为可扩展并非易事,简单地说,继承并不是面向对象编程的唯一原则。

因此,sealed 的存在是为了允许开发人员/设计人员表达和保留这些意图。密封一个类还可以通过减少维护负担来使他们的生活更轻松。它允许原始开发人员控制类(或框架)的扩展方式,因此他们可以进行内部更改,而不必担心对其他代码的破坏性更改。

一个原则是开发人员应该默认密封任何类。然后,当开发人员有意创建未密封的类时,就会迫使他们考虑可扩展性。

<小时/>

引用:Eric Lippert - Why Are So Many Of The Framework Classes Sealed?

关于.net - 为什么.Net中存在 'sealed'关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/554894/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com