自动实现的属性c#

Ela*_*nda 11 c#

  1. 有人可以解释一下使用Auto-Implemented Properties c#背后的想法吗?

    public class Customer
    {
        public int ID { get; set; }
        public string Name { get; set; }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    我有动力使用私有​​字段的属性,因此我们可以确定如何访问私有字段.但在这里 - 就像从一开始就将这个领域定义为公开一样.没有?

  2. 将字段定义为"public const"或将其定义为具有get-only属性之间是否存在差异?

San*_*zen 16

公共自动属性与公共字段不同,它们不是二进制兼容的.如果您实现了一个公共字段,并且稍后想要添加一些逻辑,则必须将其更改为属性,从而引入重大更改(因为二进制不兼容).这就是为什么许多约定规定您不应该公开公共字段而是使用属性的原因.

因此,自动属性只是任何简单的非私有类值成员的一个方便的起点,允许稍后添加逻辑,同时保持二进制兼容性.


Bar*_*ski 5

属性可以是数据绑定,而字段则不能.