Entity Framework Core 6:POCO类虚拟与非虚拟属性的影响探讨
关于POCO类虚拟属性的副作用与性能问题
先看你给出的POCO类代码:
public class MyPocoClass { public string SomeProperty { get; set; } public virtual string SomePropertyTwo { get; set; } }
副作用方面
这个自动实现的虚拟属性SomePropertyTwo本身没有直接副作用。但要注意一个间接风险:如果后续有类继承MyPocoClass并重写这个属性,要是子类的重写逻辑存在问题(比如修改了属性的语义、引入未处理的空值、或者在get/set里加入了意料之外的逻辑),可能会给依赖这个属性的代码带来潜在问题。但仅就当前这个类的实现而言,不存在副作用。
性能方面
虚拟属性的性能影响微乎其微,几乎可以忽略不计。
调用虚拟成员时,CLR需要通过虚方法表(vtable)查找对应的实现,相比非虚拟属性的直接调用,会多一点点CPU开销,但这种差异只有在极端高频的调用场景(比如每秒数百万次连续调用)下才可能被检测出来。在常规的业务开发场景中,这种性能差异完全不会对系统造成影响,没必要为此纠结。
内容的提问来源于stack exchange,提问作者imsuktoday
相关产品推荐
相关产品推荐

