JIT内联私有字段是否会从另一个类访问?

时间:2013-07-05 01:02:34

标签: c# properties jit inlining

我有一些属性用于访问父类的字段,如下所示:

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)?

当然,这是假设优化的发布版本。

更重要的是,访问修饰符是抽象的(因为它们只在编译时才起作用,并且在运行时对代码没有影响),或者它们是否会在运行时实际限制访问(当然,除了使用Reflection时)? / p>

1 个答案:

答案 0 :(得分:0)

它们是抽象的,因为它们不会影响运行时性能,但是对于启用了安全管理器的情况,仍然需要将信息存储在已编译的IL中。

不,这里对getter函数的调用没有在x64和x86中内联。

public static void Main(string[] args) {    
     B b = new B();
     int a = b.Number;
}

您可以使用these instructions来反汇编代码并自行查看。