C# 在.NET中使用属性的性能开销
一,。。使用属性是否会导致性能开销?思考一门课,比如:C# 在.NET中使用属性的性能开销,c#,.net,performance,reflection,attributes,C#,.net,Performance,Reflection,Attributes,一,。。使用属性是否会导致性能开销?思考一门课,比如: 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.每次实例化MyClass时,这些属性中的10个会是内存开销吗?
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.每次实例化MyClass
时,这些属性中的10个会是内存开销吗?(FirstAttribute
是MyClass
大小的10倍,将用其中的10个进行装饰,因此与装饰在其上的属性的总大小相比,实际对象本身非常小。)这是一个问题吗
3.对于结构(结构是值类型,属性是引用类型),这种情况会有所不同吗
4.相对于附着的物体,姿态在内存中存储在哪里?它们是如何连接在一起的
5.MyClass
一经初始化或使用反射检索属性时,属性是否立即初始化
Jon Skeet是绝对正确的,我只想给出一个额外的概念: 如果查看所有属性的基类System.Attribute,您会注意到,它的大多数成员都是静态的。因此,无论有多少个属性实例,它们只存在一次
这只是需要强调的另一点,属性并不太昂贵…谢谢Jon,你太快了。我现在明白了。属性只是引用类型的对象,所以它们被实例化并存储在内存中,与任何其他对象的方式完全相同。