字段是什么?

字段也叫“field”。
字段是类、结构体中的变量成员。

  1. class Octopus{
  2. string name;
  3. public int Age = 10;
  4. }

如果希望字段不要被更改,可以添加readonly修饰符。

  1. class Octopus{
  2. string name;
  3. public readonly int Age = 10;
  4. }

属性是什么?

属性也叫“Property”。
属性内部像方法一样还有逻辑。

  1. class Octopus{
  2. private int _age = 10;
  3. public int Age{
  4. get {return _age;}
  5. set {_age = value;}
  6. }
  7. }
  • get和set是属性的访问器。
  • 读属性时会运行get访问器,它必须返回属性类型的值。
  • 给属性赋值时运行set访问器。它有一个名为value的隐含参数,其类型和属性的类型相同。它的值一般来说会赋值给一个私有字段。

字段和属性的区别?

  • 访问属性和字段的方式是相同的。
  • 但是,属性在获取和设置值的时候给实现者提供了完全的控制能力。
  • 这种控制能力使实现者可以选择任意的内部表示形式,而无须将属性的内部细节暴露给用户。
  • 例如,set方法可以在value超出有效范围时抛出异常。

什么是抽象类?