我有一些属性用于访问父类的字段,如下所示:
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>
答案 0 :(得分:0)
它们是抽象的,因为它们不会影响运行时性能,但是对于启用了安全管理器的情况,仍然需要将信息存储在已编译的IL中。
不,这里对getter函数的调用没有在x64和x86中内联。
public static void Main(string[] args) {
B b = new B();
int a = b.Number;
}
您可以使用these instructions来反汇编代码并自行查看。