将JIT内联专用字段从另一个类访问
本文关键字:另一个 访问 字段 专用 JIT | 更新日期: 2023-09-27 18:20:59
我有一些属性用于访问父类中的字段,比如:
A类:
private int _number = 42;
public virtual int Number { get { return _number; } }
B:A:
public override int Number { get { return base.Number + 1; } }
我的问题是,如果我访问B.Number
,它还会解析为直接访问A._number
(+1)吗?
当然,这是假设一个优化的Release构建。
更重要的是,访问修饰符是抽象的吗(因为它们只在编译时重要,在运行时对代码没有影响),还是它们实际上会在运行时限制访问(当然,使用反射时除外)?
它们是抽象的,因为它们不会影响运行时性能,但在启用了例如安全管理器的情况下,信息仍然需要存储在编译的IL中。
不,这里对getter函数的调用在x64和x86中都没有内联。
public static void Main(string[] args) {
B b = new B();
int a = b.Number;
}
您可以使用这些说明来反汇编jitted代码,并亲自查看。