假设我有一个 C# 接口,IMyInterface
定义如下:
// C# code
public interface IMyInterface
{
string MyProperty { get; }
}
假设我还有一个 C++/CLI 类,MyConcreteClass
它实现了这个接口,并且它的头声明如下:
public ref class MyConcreteClass : public IMyInterface
{
public:
virtual property String^ MyProperty
{
String^ get() sealed { return String::Empty; };
void set( String^ s ) sealed { };
}
};
显然,当您通过接口访问虚拟成员时,运行时必须在类中查找实现,并且会比成员不是虚拟的要慢。
IMyInterface obj;
obj->MyProperty = "HELLO";
我专门询问直接在具体对象类型上使用虚拟成员的性能。MyProperty
如果是虚拟成员,这会更慢吗?
MyConcreteClass obj;
obj->MyProperty = "HELLO";