Ram*_*eef 12 c# memory performance properties
封装像这样的私有成员之间有什么区别(性能,内存等)
private int age;
public int Age
{
get { return age; }
set { age = value; }
}
Run Code Online (Sandbox Code Playgroud)
并定义这样的属性
public int Age
{
get ;
set ;
}
Run Code Online (Sandbox Code Playgroud)
cdh*_*wie 11
在第二种情况下,C#编译器将为您生成一个字段,并生成一个getter和setter来访问它.换句话说,您发布的两个代码示例之间没有功能差异.唯一的区别是私有字段的名称,它将由编译器生成.
是C#编译器生成的代码自动实现的属性是几乎相同的第一个例子(它采用的是私有的,支持字段),所以我不会担心太多.
该唯一的真正的区别在于,它装饰的财产getter和setter与[CompilerGenerated]属性.这不应该对获取和设置属性的性能产生任何影响.(作为一个小的挑剔,这应该稍微增加程序集的二进制的大小).
我喜欢自动实现的属性,除了简洁之外,它甚至可以防止声明类型访问后备字段而不是属性(后备字段是匿名的).这为代码带来了清晰度,并且通常也使得重构/更改属性实现更容易.
| 归档时间: |
|
| 查看次数: |
1584 次 |
| 最近记录: |