gpt4 book ai didi

c# - 虚拟属性是否比具体属性慢?

转载 作者:太空宇宙 更新时间:2023-11-03 21:48:39 24 4
gpt4 key购买 nike

假设我有一个名为 IMyInterface 的 C# 接口(interface),定义如下:

// C# code
public interface IMyInterface
{
string MyProperty { get; }
}

假设我还有一个 C++/CLI 类 MyConcreteClass,它实现了这个接口(interface)并且其 header 声明如下:

public ref class MyConcreteClass : public IMyInterface
{
public:
virtual property String^ MyProperty
{
String^ get() sealed { return String::Empty; };
void set( String^ s ) sealed { };
}
};

显然,当您通过接口(interface)访问虚拟成员时,运行时必须在类中寻找实现,并且会比成员不是虚拟成员时慢。

IMyInterface obj;
obj->MyProperty = "HELLO";

我特别询问直接在具体对象类型上使用虚拟成员的性能。如果 MyProperty 是一个虚拟成员,这会更慢吗?

MyConcreteClass obj;
obj->MyProperty = "HELLO";

最佳答案

虚方法较慢,因为运行时必须检查该方法的实际实现。所以这是一张额外的支票。您仍然可以每秒进行数十万次。所以不要强调它。在 Java 中,默认情况下每个方法都是虚拟的。

更新:我不确定引入 C++ 会如何改变事情。我的猜测是这会很相似,因为您仍在访问虚拟方法。我不确定它会如何改变它。但这再次只是我的猜测。希望其他人可以提供更多帮助。

关于c# - 虚拟属性是否比具体属性慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15633168/

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