加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 在.NET中使用属性的性能开销

发布时间:2020-12-15 06:28:28 所属栏目:百科 来源:网络整理
导读:1.使用属性是否导致性能上升?想像一个类: public class MyClass { int Count {get;set;} } 它具有10个属性(属性是类,其中属性类本身比MyClass本身更大,如: public class FirstAttribute : Attribute{ int A,B,C,D,E,F,G,H,I,J ... {get;set;}} 2.这些属性
1.使用属性是否导致性能上升?想像一个类:
public class MyClass
    {
       int Count {get;set;}
    }

它具有10个属性(属性是类,其中属性类本身比MyClass本身更大,如:

public class FirstAttribute : Attribute
{
   int A,B,C,D,E,F,G,H,I,J ... {get;set;}
}

2.这些属性中的10个是每次MyClass被实例化时的内存开销? (FirstAttribute是MyClass的大小的10倍,将用其中的10个进行装饰,因此使实际对象本身与其上装饰的属性的总大小相比).这是一个问题吗?

3.这种情况对于结构体来说是不同的(Structs是值类型和属性是引用类型)?

存储在存储器中的与其所附加的对象相关的attibutes在哪里?他们怎么挂在一起?

5.初始化MyClass或使用反射检索它们时,是否初始化属性?

解决方法

>在空间方面有一小部分开销,但并不是很多 – 属性不会妨碍正常执行. >否,属性会对类型执行操作,而不是实例,因此您不会通过使用大量“大”属性占用大量内存. (我不知道你是否得到一个具体类型的泛型,或一个通用类型定义 – 我会期望后者…) >不,因为1的答案. >属性不附加到对象 – 它们附加到类型.我不知道他们存储在内存中的细节,但这是一个实现细节. >属性仅在您使用反射时初始化.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读