gpt4 book ai didi

vb.net - VB.Net 中的 MyClass

转载 作者:行者123 更新时间:2023-12-04 16:14:48 25 4
gpt4 key购买 nike

VB.Net 的 MyClass 关键字的实际用途是什么?

我了解 technical usage of MyClass ;我不明白它在现实世界中的实际用法。

仅当您有任何虚拟(可覆盖)成员时,使用 MyClass 才有意义。但这也意味着您要忽略子类中的覆盖实现。这似乎是自相矛盾的。

我可以想到一些人为的例子,但它们只是糟糕的设计而不是实际使用。

最佳答案

MyClass ,从编译器的角度来看,是一种省略 callvirt 的方法。支持 call 的指令操作说明。本质上,当您使用虚拟语义 (callvirt) 调用方法时,您表示您想要使用最衍生的变体。如果您希望省略您使用的派生变体 MyClass (call)。虽然您已经表示您了解基本概念,但我认为从功能的角度而不是隐含的理解来描述它可能会有所帮助。它在功能上与 MyBase 相同。需要注意的是范围是 MyBase 的基本类型, 而不是带有 MyClass 的事件类型.

在层次结构的当前点覆盖虚拟调用语义通常是一个糟糕的设计选择,它唯一有效的时候是您必须依赖对象层次结构中的特定功能,并且不能依赖继承者通过在其实现中的基本调用来调用您的变体。它还可以依赖您作为设计者来决定它是唯一的选择,因为您在对象层次结构中进一步覆盖了功能,并且您必须确保在这种极端情况下,在继承树的当前级别上的这个特定方法必须是叫。

这一切都与设计有关,了解整体设计和极端案例。 C♯ 不包含此类功能可能是有原因的,因为在这些极端情况下,您可以将方法分离为层次结构中当前级别调用的私有(private)变体,并在必要时仅引用该私有(private)实现。我个人认为,使用分段方法是达到目的的理想方法,因为它明确说明了您的设计选择,并且更易于遵循(并且它也是没有功能等效于 MyClass 的语言中唯一有效的方法。)

关于vb.net - VB.Net 中的 MyClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/155884/

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