Ped*_*ery 1 .net compilation properties
这可能是一个非常简单的问题,但我正在尝试理解编译的一些内部工作原理.
非常简单地说,想象一个任意对象被实例化.然后在堆上分配此对象.该对象具有PointF类型的属性(值类型),具有get和set方法.
想象一下get和set方法包含一些用于完成工作的计算.如何以及在何处(堆栈/堆)以及何时实例化此代码?
这是这个问题的背景:
我正在为一个对象编写get和set方法,并且需要非常频繁地访问这些方法.get和set代码本身相当庞大,所以我担心在最糟糕的情况下,这些方法会被实例化为一个对象或一个值类型,每个内部代码都可以访问该属性.另一方面,代码可能在创建主对象时被实例化,并且简单地告诉CPU将jmp指向属性代码start.无论如何,这是我想澄清的.
方法(或属性)不会被实例化.你似乎在思考我曾经做过的事情 - 创建一个类的实例不仅为数据分配空间,而且为代码分配空间.这不是真的.
即使在C++中,它的工作方式是分配数据,以及指向函数指针数组的指针 - 虚函数表或vtable.vtable中的条目将指向虚方法.非虚方法不需要vtable中的条目.
在任何一种情况下,只有一个代码副本,无论实例化了多少个对象.