c# – 将私有成员封装为属性并定义没有私有成员的属性有什么区别?

封装这样的私有成员之间有什么区别(性能,内存等)

private int age;
public int Age
{
  get { return age; }
  set { age = value; }
}

并定义一个这样的属性

public int Age
{
  get ;
  set ;
}
最佳答案
C#编译器为auto-implemented properties生成的代码与您的第一个示例几乎相同(它使用私有的后备字段),所以我不用担心它太多了.

唯一真正的区别是它使用[CompilerGenerated]属性来装饰属性getter和setter.这不应该对获取和设置属性的性能有任何影响. (作为一个小小的nitpick,这应该会增加程序集的二进制的大小).

我所喜欢的自动实现的属性,除了简洁的当然是,它阻止甚至声明类型访问后备字段而不是属性(后台字段是匿名的).这样可以使代码更加清晰,并且通常使得重构/更改属性实现变得更加容易.

转载注明原文:c# – 将私有成员封装为属性并定义没有私有成员的属性有什么区别? - 代码日志