问题标签 [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.
c# - 防止方法在 C# 中被覆盖
如何防止方法在派生类中被覆盖?
在 Java 中,我可以通过在final
我希望防止被覆盖的方法上使用修饰符来做到这一点。
如何在 C# 中实现相同的目标?
我知道使用sealed
但显然我只能将它与override
关键字一起使用?
所以在上面的例子中,我可以防止methodB()
被任何派生自 class 的类覆盖B
,但是我如何首先防止 classB
覆盖methodB()
?
更新:当我发布这个问题时,我错过了A 类声明virtual
中的关键字。methodB()
更正了它。
c# - C#sealed vs Java final
有人可以告诉我以下使用sealed
无法编译的原因吗?然而,如果我替换sealed
为final
Java 并将其编译为 Java,它就可以工作。
.net - 为什么必须为 WinMD/WinRT 组件密封公开类型?
VS 编译器不允许为 WINMD 类型库创建密封的公开类型。
为什么要设置这个限制?(我知道密封类型的优势,我的问题是关于 Win RT 组件)。
c# - 密封类中没有主体的虚拟方法
当我尝试运行以下代码时,它会出错。
我得到的错误是。
HB_Auth.AuthImpl.ReqHandler.ReqHandler(object, IntPtr)' 必须有一个主体,因为它没有标记为抽象、外部或部分 (CS0501) (HB_Auth.Patched)
新虚拟成员
HB_Auth.AuthImpl.ReqHandler.BeginInvoke(object[], AsyncCallback, object)' is declared in a sealed class
HB_Auth.AuthImpl.ReqHandler' (CS0549) (HB_Auth.Patched)
c# - 反射未从中提取值:具有属性的密封类,该属性是另一个密封类的对象。
我正在使用 object.GetType().GetProperty(string propertyName) 通过反射反复评估属性。
如果 obj 是密封类但具有作为普通公共类对象的属性,这可以正常工作。但是,如果此属性包含一个密封的类对象,它不会通过 GetProperty() 方法返回任何属性。
尝试通过 Prpty1 --> Prpty2--> Prpty3 从基类对象递归迭代。param.Properties 包含 Prpty1、Prpty2、Prpty3 的字符串数组。我无法获得 Prpty2,它以 Null 的形式出现。使用下面编写的方法进行此访问。
示例代码如下:
请有人帮我找到访问 Prpty2、Prpty3 的方法,或者它是使用反射的一些现有限制。谢谢。
.net - 为什么“密封”会影响 IDisposable 的实现?
在这里阅读答案后,我决定将我的类标记为密封,以简化IDisposable实现。为什么sealed会影响IDisposable的实现(例如GC.SuppressFinalize(this);
不需要调用)?请解释发生了什么。我需要能够向其他开发人员解释为什么我将课程密封起来。
scala - 什么是密封特性?
密封类在“Scala 编程”中进行了描述,但密封特性没有。我在哪里可以找到有关密封特性的更多信息?
我想知道,如果密封特征与密封类相同?或者,如果不是,有什么区别?什么时候使用密封特性是个好主意(什么时候不)?
java - 如何创建示例 java.lang.SecurityException:密封违规:包 .. 已密封
我们遇到了一个长期运行的 Java 进程突然吐出 java.lang.SecurityException: seal violation: package .. 在 JVM 运行时覆盖密封 jar 后被密封的问题。
我有点理解这个异常,但是为了重现这个(以及接下来的内容),我试图人为地创建一个密封的异常并且它不起作用。
有一个名为 'seal.jar' 的 jar 文件,其中有一个 META-INF/MANIFEST.MF 文件,如下所示:
该包包含 A1、A2、A3 类,如下所示:
第二个 jar seal-2.0.jar 具有相同的三个类,但打印“版本 2.0” 现在第三个 jar 文件 (run.jar) 具有以下内容:
我认为当我执行以下操作时,这段代码会创建一个密封的异常:
所以看起来 A1 是从 seal-1.0.jar 加载的,但 A2 是从覆盖的 seal-1.0.jar 加载的。
因为第一类(A1)是从 seal-1.0.jar 加载的,第二类(A2)是从被覆盖的文件加载的,所以不应该违反密封吗?
.net - 为什么要密封单例类?
我想知道为什么单例类应该被密封。如果我们将构造函数设置为私有,我们可以阻止派生类吗?.. 下面我从 MSDN 粘贴几行。请给我一些颜色。
在这个策略中,实例是在第一次引用类的任何成员时创建的。公共语言运行时负责变量初始化。该类被标记为密封以防止派生,这可能会添加实例。有关将类标记为密封的利弊的讨论,请参见 [Sells03]。此外,该变量被标记为只读,这意味着它只能在静态初始化期间(此处显示)或在类构造函数中分配。
c# - 如何向密封类 Arc 添加属性
如何向密封的 Arc 类添加两个新属性。我想用一个 double 属性来扩展这个类来保存一个 double 值和一个字符串属性来保存对象的名称。我的第一次尝试是通过 Tag 属性,但这只能保存双精度值或对象名称。
问题是我创建了一个包含 43 个圆弧对象的新用户控件,当鼠标进入圆弧时,另一个控件会显示输入段的值和名称。所以每个弧都使用相同的 MouseEntered 函数,我想通过“对象发送者”获取信息。
我希望任何人都有一个好主意。