如果我创建一个拥有public int I;
(或任何其他字段)的类,和创建一个继承于一个拥有public int I;
的基类的类,编译器会生成相同的IL代码吗?
无论哪种方式得到的类表现都是一样的,但编译器是否也一样呢?
也就是说,编译器是将基类中的代码复制粘贴到派生类中,还是在继承时实际上创建了两个不同的类对象?
class A
{
public int I;
}
class B : A
{
}
现在以下两种调用DoSomething()之间是否存在性能差异?
var a = new A();
var b = new B();
DoSomething(a.I);
DoSomething(b.I); // Is this line slower than the above line due to inheritance?
尝试忽略编译器可能为此特殊情况进行的任何优化。我的问题是关于C#中继承是否普遍存在性能惩罚的。大多数时候我并不关心,但有时我想要优化一段高频代码。