gpt4 book ai didi

.net - 为什么我们不能在接口(interface)/抽象类中拥有共享(静态)函数/方法?

转载 作者:行者123 更新时间:2023-12-02 20:52:19 24 4
gpt4 key购买 nike

在.net中,我们不允许在抽象类和接口(interface)中共享函数/方法。为什么他们不被允许?

这在其他语言中也一样吗?像 Java 一样?

如果允许共享方法,可能会出现什么潜在问题?

最佳答案

您当然可以在抽象类中拥有静态(共享)方法。但是,您不能将它们放在界面中。

听起来您确实想要虚拟静态/共享方法 - 但这些方法不可用。静态方法不会以多态方式调用,并且按照大多数 .NET 的工作方式,这没有多大意义。当将接口(interface)用作类型参数约束时,能够在接口(interface)中指定静态方法是有意义的 - an idea I've blogged about before now .

Delphi 有元类的概念,其中(据我所知)类的元类中的实例方法就像类本身中的静态方法 - 并且一个元类可以从另一个元类派生,覆盖这些方法我不是Delphi程序员,但是chapter 2 of Delphi in a Nutshell如果您想了解更多信息,可能对您有用。

Java 允许在接口(interface)中指定常量,但这是唯一支持的静态成员类型。

有趣的是,CLI 本身确实允许接口(interface)中的静态方法,但那是带有主体的方法,而不仅仅是接口(interface)的实例成员提供的签名。

关于.net - 为什么我们不能在接口(interface)/抽象类中拥有共享(静态)函数/方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/330318/

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