问题标签 [sealed]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
9 回答
3829 浏览

c# - 为什么默认情况下不密封类?

我只是想知道,既然密封关键字的存在表明它是类作者的决定,是否允许其他类从它继承,为什么默认情况下不密封类,用一些关键字将它们显式标记为可扩展?

我知道这有些不同,但访问修饰符以这种方式工作。默认设置是限制性的,只有插入关键字才能授予更全面的访问权限。

不过,我很有可能没有正确考虑到这一点,所以请保持人道!

0 投票
1 回答
367 浏览

linq-to-sql - LINQ to SQL 的提供者模型的哪一部分使其无法扩展它以支持第三方(阅读:非 Microsoft)数据库?

据说 LINQ to SQL 提供程序模型中有一些类是密封的——但我从来没有真正弄清楚哪些类需要“解封”才能使用它。

假设地说,我需要解封哪些类来启用提供者模型?

[编辑:我知道sealed关键字意味着它不应该被修改,但我们只是假设解封BCL类不是这里的问题。]

0 投票
9 回答
4485 浏览

.net - 为什么 .Net 中存在“密封”关键字?

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

“密封”关键字的存在是否有充分的理由?

例如,Silverlight 中的 NotifyCollectionChangedEventArgs 是密封的。我想创建自己的支持 AddRange 和 RemoveRange 的 ObservableCollection 版本,但是 NCCEA 的 Silverlight 版本不提供支持 NewItems 和 OldItems 属性的多个项目的构造函数,这些项目已经定义为 IList。通常,我只是用我自己的变体来扩展这个类,它覆盖了 NewItems 和 OldItems 属性,但在这种情况下,我不能,而且我看不出为什么会这样。

0 投票
3 回答
1371 浏览

c# - 编译器如何优化密封类实现的虚方法

我想知道如何优化以下代码。特别是关于虚拟和直接呼叫。我已经评论了我认为一切都是如何优化的,但这些只是猜测。

0 投票
1 回答
95 浏览

c++ - MSVC++ 的属性选项卡上的 Items 是什么意思?

我在玩我的 MSVC++ 编译器,我的点类的属性选项卡说:

这些是什么意思,为什么除了 IsAbstract 和 IsSealed 之外所有这些都是灰色的?

0 投票
5 回答
2911 浏览

c# - 访问级别和修饰符(私有、密封等)是否在 C# 中用于安全目的?

我已经看到您可以使用反射来操纵私有和内部成员。我还看到它说“密封”类比非密封类更安全

修饰符“public、protected、internal、private、abstract、sealed、readonly”是否仅仅是关于设计和 API 使用的君子协议,只要您可以访问反射就可以打破?如果黑客已经在运行调用你的 API 的代码,那么游戏就已经失败了,对吧?

以下是否比任何其他类更安全?

0 投票
5 回答
6301 浏览

c# - 在 RhinoMocks 中模拟一个返回密封类的方法

运行此代码:

什么时候

throws NotSupportedException - “无法创建密封类的模拟”。我理解为什么你不能模拟一个密封类(尽管 TypeMock 中有解决方案),但是模拟一个返回密封类(字符串)的类有什么问题?

0 投票
9 回答
1430 浏览

c# - 为什么这个 C# 类声明会编译?

这个问题确实有点毫无意义,但我只是好奇:

这:

编译,但给出警告

而这:

不编译。纯粹出于好奇,这是有原因的吗?

0 投票
2 回答
1050 浏览

c# - 私有构造函数,子类化和密封

如果可以通过在基类中声明私有构造函数来防止子类化,为什么我们需要“密封”关键字?是不是因为 CLI 可以更好地优化它?也许。

谢谢。

0 投票
5 回答
4177 浏览

c++-cli - c++ 密封和接口

我注意到 C++ 中有密封和接口关键字。这仅适用于 CLR C++ 吗?如果没有,什么时候密封和接口被添加到 C++ 标准中?它们在 C++ 中的含义与在 C# 中的含义相同吗?如果不是,我如何获得标准 C++ 中的等价物?