标签: sealed

我可以制作"密封除内部类型"之外的类型

我想创建一个可以从同一程序集中的类型继承的类型,但不能从程序集外部继承.我确实希望类型在程序集之外可见.

这可能吗?

c# internal sealed

10
推荐指数
1
解决办法
479
查看次数

最终和密封的目的

为什么有人想要将课程标记为最终或密封?

oop final sealed

9
推荐指数
3
解决办法
881
查看次数

如何摆脱虚拟表?密封类

据我所知,让班级sealed摆脱VTable中的查找或我错了吗?如果我创建一个类sealed,这是否意味着类层次结构中的所有虚方法也都标记了sealed

例如:

public class A {
    protected virtual void M() { ........ }
    protected virtual void O() { ........ }
}

public sealed class B : A {
    // I guess I can make this private for sealed class
    private override void M() { ........ }
    // Is this method automatically sealed? In the meaning that it doesn't have to look in VTable and can be called directly?

    // Also what about O() can …
Run Code Online (Sandbox Code Playgroud)

c# oop inheritance sealed vtable

9
推荐指数
1
解决办法
480
查看次数

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

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

这个:

public sealed class MyClass
{
   protected void MyMethod(){}
}
Run Code Online (Sandbox Code Playgroud)

编译,但发出警告

而这个:

public sealed class MyClass
{
   public virtual void MyMethod(){}
}
Run Code Online (Sandbox Code Playgroud)

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

.net c# sealed

8
推荐指数
2
解决办法
1371
查看次数

如何禁止在C#中重写类方法/属性?

我相信我希望类的一些方法和属性是不可重写的,并在所有派生类中使用base的实现.怎么做到这一点?sealed关键字似乎不起作用,并说"方法不能被密封,因为它不是覆盖".

.net c# overriding sealed

8
推荐指数
2
解决办法
3200
查看次数

Python相当于.Net的密封类

python是否有类似于密封类的东西?我相信它在java中也被称为final类.

换句话说,在python中,我们可以标记一个类,以便它永远不会被继承或扩展吗?python曾经考虑过有这样的功能吗?为什么?

免责声明

实际上试图理解为什么密封课程甚至存在.答案在这里(和很多,很多,很多,很多,很多,真的很多其他地方)没有满足我的人,所以我试图从不同的角度看.请避免对这个问题的理论答案,并专注于标题!或者,如果你坚持,至少请给出csharp中密封类的一个非常好的实用例子,指出如果它是未密封的话会破坏大的时间.

我不是两种语言的专家,但我确实知道两种语言.就在昨天,在使用csharp进行编码时,我了解了密封类的存在.现在我想知道python是否有相同的东西.我相信它的存在是有充分理由的,但我真的没有得到它.

.net python class sealed

8
推荐指数
1
解决办法
1809
查看次数

为什么暴露类型必须为WinMD/WinRT组件密封?

VS编译器不允许为WINMD类型库创建密封的公开类型.

为什么要放置此限制?(我知道密封类型的优点,我的问题是关于Win RT组件).

.net sealed windows-8 windows-runtime winrt-xaml

7
推荐指数
1
解决办法
1672
查看次数

为什么单身类应该密封?

我想知道为什么要密封单例类.如果我们将构造函数设置为私有,我们可以阻止类派生吗?..下面我从MSDN粘贴几行.请给我一些颜色..

在此策略中,实例是在第一次引用类的任何成员时创建的.公共语言运行库负责变量初始化.该类被标记为密封以防止派生,这可能会添加实例.有关标记类密封的优缺点的讨论,请参阅[Sells03].此外,变量标记为只读,这意味着它只能在静态初始化(此处显示)或类构造函数中分配.

http://msdn.microsoft.com/en-us/library/ff650316.aspx

.net singleton design-patterns class-design sealed

7
推荐指数
2
解决办法
4499
查看次数

为什么StringBuilder类是密封的?

我想知道这一点,因为我需要继承StringBuilder来实现一个TextChanged事件.我总是可以创建一个包含private StringBuilder隐式/显式转换的包装器,但这似乎不是一个合适的解决方案.

幸运的是,我可以从写入StringBuilder的对象继承,所以这对我来说不是一个问题,但我仍然很好奇为什么这个类是密封的.

.net c# inheritance stringbuilder sealed

7
推荐指数
2
解决办法
2039
查看次数

课程是否仍应作为推荐密封?

我知道这在"技术上"是这个问题的重复. 我应该推荐默认的密封类吗?

但是我再问一遍,因为显然这个建议已经改变了1次虽然我在过去几年里找不到任何关于它的事情,或者现在越来越多的人推荐AGAINST密封课程,这要归功于改进在测试中(这是主要原因之一),处理器速度(速度差现在可以忽略不计)等.

我正在试图找出最新的天气指南是什么,或者不标记classessealed.

1 Essential C#6.0(第5版),Mark Michaelis(合着者Eric Lippert):

"一般来说,将一个类别标记为密封很少进行,并且只应保留那些有充分理由支持这种限制的情况.实际上,离开类型未开封的情况越来越令人满意,因为单元测试因为需要支持模拟(测试双重)对象创建来代替实际的实现."

这是硬拷贝证明,因为其他人都是口口相传.

c# class sealed

7
推荐指数
0
解决办法
163
查看次数