【发布时间】:2016-07-10 01:51:36
【问题描述】:
也许问题的标题不正确,因为模块中的方法不能被隐藏,但本质上我想隐藏一个再次声明它的基成员,并隐藏它而不失去调用它并返回的机会正确的值。
我通常为班级这样做:
<EditorBrowsable(EditorBrowsableState.Never)>
Public Shadows Function Equals(ByVal obj As Object) As Boolean
Return MyBase.Equals(obj)
End Function
这适用于结构:
<EditorBrowsable(EditorBrowsableState.Never)>
Public Shadows Function Equals(ByVal obj As Object) As Boolean
Return Object.Equals(obj, Me)
End Function
我发现尝试使用模块重现此行为的问题是我应该使用以下示例中的疑问参数来填充,因为我不能使用 Me、模块名称或构造函数,我明白了,但那我需要用什么?
Module TestModule
<EditorBrowsable(EditorBrowsableState.Never)>
Public Function Equals(ByVal obj As Object) As Boolean
Return Object.Equals(obj, ?)
End Function
End Module
【问题讨论】:
-
如果您调用标准
Object.Equals,这将起到什么作用? -
@Plutonix 感谢您的评论。原因只是为了设计,我非常反复无常地设计类,我喜欢看到我的类的 Intellisense 自动完成框没有我在大多数情况下永远不会使用的基本方法,例如 Equals 或 ReferenceEquals,我将它们隐藏起来以进行设计,但我不想失去调用它们以提高效率的能力。
-
我不知道这是否有帮助,但 VB 模块概念几乎是 IDE 强制执行的概念。如果您将
<Microsoft.VisualBasic.CompilerServices.StandardModule>应用于不属于当前解决方案的类库 (dll) 中的类,您将看到其Shared成员看起来就像它们在 VB 模块中一样。
标签: .net vb.net module equality shadowing