字段是什么?
字段也叫“field”。
字段是类、结构体中的变量成员。
class Octopus{
string name;
public int Age = 10;
}
如果希望字段不要被更改,可以添加readonly修饰符。
class Octopus{
string name;
public readonly int Age = 10;
}
属性是什么?
属性也叫“Property”。
属性内部像方法一样还有逻辑。
class Octopus{
private int _age = 10;
public int Age{
get {return _age;}
set {_age = value;}
}
}
- get和set是属性的访问器。
- 读属性时会运行get访问器,它必须返回属性类型的值。
- 给属性赋值时运行set访问器。它有一个名为value的隐含参数,其类型和属性的类型相同。它的值一般来说会赋值给一个私有字段。
字段和属性的区别?
- 访问属性和字段的方式是相同的。
- 但是,属性在获取和设置值的时候给实现者提供了完全的控制能力。
- 这种控制能力使实现者可以选择任意的内部表示形式,而无须将属性的内部细节暴露给用户。
- 例如,set方法可以在value超出有效范围时抛出异常。