当前位置: 首页 > 编程语言 > C#

C#学习教程:.NET中使用属性的性能开销分享

时间:2023-04-10 20:46:26 C#

.NET中使用属性的性能开销1..属性的使用有没有性能开销?想想一个类:publicclassMyClass{intCount{get;set;}}它有10个属性(属性是类,属性类本身大于MyClass本身,如:publicclassFirstAttribute:Attribute{intA,B,C,D,E,F,G,H,I,J...{get;set;}}2..每次实例化MyClass时,这些属性中的10个是内存开销吗?(FirstAttribute是MyClass大小10x,其中10个将用于装饰,因此与装饰在其上的属性的总大小相比,实际对象本身非常小。)这是一个问题吗?3..这种情况对结构有什么影响(结构是值类型和属性是引用类型)?4..存储在内存中的属性如何与它们所附加的对象相关?它们是如何相关的?5..一旦初始化MyClass或使用反射检索属性,属性是初始化?在空间方面有一点开销,但不是很多-属性不会妨碍正常执行。不,属性作用于类型,而不是实例,所以你不会用掉很多通过使用大量“大”属性来节省内存。(我不知道你是每个具体类型得到一个泛型,还是每个泛型定义一个-我期待后者......)不,因为答案1。属性不附加到对象-它们附加到类型.我不知道它们究竟存储在内存中何处的细节,但无论如何这是一个实现细节。仅在使用反射时才初始化属性。JonSkeet完全正确,我只是想提出一个额外的概念:如果您查看所有Attribute的基类System.Attribute,您会注意到它的大多数成员都是静态的。因此,无论您有多少个Attribute实例,它们都只存在一次。这只是再强调一点,属性不要太昂贵……以上就是C#学习教程的全部内容:.NET中使用属性的性能开销。多多关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: