属性:

1、作用:

就是保护字段,封装数据,对字段的赋值和取值进行限定,此时,给字段加上属性之后,在外界只需要访问属性即可,这样做,即保护了字段中的数据,又可以对赋值进行过滤。

2、要求:

一般采用Pascal命名法,数据类型和字段要一致,必须使用public修饰符。

3、属性的本质:

属性本身,其实没有保存数据!而字段才是真正的数据存储单元。属性就是两个方法,一个get(取值)和set(赋值)与js中的Object.defineProperty类似。

4、解释:

下边给字段_age加上属性,外界过可通过Age属性(new Person().Age)来间接的访问 _age字段(此时在外界也直接访问不到_age字段了,因为前边加上了private修饰符),访问属性时,会执行get方法,我们在get方法里边会直接返回_age(当然你也可以修饰、处理一下_age字段再返回);当外界赋值时,会执行set方法,下边value就是外界给属性赋的值,我们在里边加了一层判断,当赋值小于0时,会强制给value值改为1,之后在赋值给_age字段。

(注意:下边private是目前我们使用的第二的属性修饰符,私有的,下边有解释)

class Person
{
// 当给属性赋值时,会执行set方法,当输出属性值时,会执行get方法
private int _age;
public int Age
{
get { return _age; }
set {
if (value < 0)
{
value = 1;
}
_age = value;
}
// 在c# 3.0以后使用自动属性(说就是上边写法的语法糖而已)
// public int Age{ get; set; }
}
public void SEE()
{
Console.WriteLine($"今年{this.Age}岁");
Console.ReadLine();
}

}
class Person
{
public int Age
{
// 在c# 3.0以后使用自动属性,此时不需要写私有字段了,编辑器会帮助我们创建私有字段!!!
public int Age{ get; set; }
}
public void SEE()
{
Console.WriteLine($"今年{this.Age}岁");
Console.ReadLine();
}

}

 

访问修饰符:

public: 公共的,在哪都能访问到

private:私有的,只能在当前类的内部进行访问,出了这个类就访问不到了(补充:在类中,不写访问修饰符,默认就是private)。

 

英文单词:

Field:字段

Methods:方法

properties:属性