c#学习笔记 ——get和set访问器:获取和设置字段(属性)的值

一、get和set语法

定义属性的语法形式如下。

public    数据类型    属性名
{
    get
    {
        获取属性的语句块;
        return 值;
    }
    set
    {
        设置属性得到语句块;
    }
}

其中:

1) get{}

get 访问器,用于获取属性的值,需要在 get 语句最后使用 return 关键字返回一个与属性数据类型相兼容的值。

若在属性定义中省略了该访问器,则不能在其他类中获取私有类型的字段值,因此也称为只写属性

2) set{}

set 访问器用于设置字段的值,这里需要使用一个特殊的值 value,它就是给字段赋的值。

在 set 访问器省略后无法在其他类中给字段赋值,因此也称为只读属性。

通常属性名的命名使用的是 Pascal 命名法,单词的首字母大写,如果是由多个单词构成,每个单词的首字母大写。

由于属性都是针对某个字段赋值的,因此属性的名称通常是将字段中每个单词的首字母大写。例如定义了一个名为 name 的字段,属性名则为 Name。

 

二、案例

【实例】定义一个图书信息类(Book),在类中定义图书编号(id)、图书名称(name)、图书价格(price)3 个字段,并分别为这 3 个字段设置属性,其中将图书名称设置为只读属性。

根据题目要求,代码如下。

  1. namespace code_1
  2. {
  3. class Book
  4. {
  5. private int id;
  6. private string name;
  7. private double price;
  8. //设置图书编号属性
  9. public int Id
  10. {
  11. get
  12. {
  13. return id;
  14. }
  15. set
  16. {
  17. id = value;
  18. }
  19. }
  20. //设置图书名称属性
  21. public string Name
  22. {
  23. get
  24. {
  25. return name;
  26. }
  27. }
  28. //设置图书价格属性
  29. public double Price
  30. {
  31. get
  32. {
  33. return price;
  34. }
  35. set
  36. {
  37. price = value;
  38. }
  39. }
  40. }
  41. }

在上面的实例中,在给字段赋值时直接将 value 值赋给字段,如果要对赋给字段的值加以限制,可以先判断 value 值是否满足条件,如果满足条件则赋值,否则给字段赋默认值或进行其他操作。

假设上面实例中的图书价格要求是大于 0 的,如果输入的值不满足条件,则将图书价格设置为 0。修改后的图书价格字段的属性代码如下。

  1. public double Price
  2. {
  3. get
  4. {
  5. return price;
  6. }
  7. set
  8. {
  9. if(value >= 0)
  10. {
  11. price = value;
  12. }
  13. else
  14. {
  15. price = 0;
  16. }
  17. }
  18. }

通过上面的实例可以看出,在定义字段属性时,属性的作用就是为字段提供 get、set 访问器,由于操作都比较类似,在 C# 语言中可以将属性的定义简化成如下写法。

public    数据类型    属性名{get;set;}

 

这种方式也被称为自动属性设置。简化后图书类中的属性设置的代码如下。

  1. public int Id{get; set;}
  2. public string Name{get; set;}
  3. public double Price{get; set;}
如果使用上面的方法来设置属性,则不需要先指定字段。如果要使用自动属性的方式来设置属性表示只读属性,直接省略 set 访问器即可。只读属性可以写成如下形式。
  1. public int Id{get;}=1;

这里相当于将 Id 属性的值设置成 1,并且要以分号结束。但是,在使用自动生成属性的方法时不能省略 get 访问器,如果不允许其他类访问属性值,则可以在 get 访问器前面加*问修饰符 private,代码如下。

 

  1. public int Id{private get; set;}

这样,Id 属性的 get 访问器只能在当前类中使用。

 

 

 

 

 

 

c#学习笔记 ——get和set访问器:获取和设置字段(属性)的值

上一篇:iOS 8 应用构建细节挖掘 之 应用启动流程


下一篇:【已解决】Windows平台,QT程序运行错误:it could not find or load the Qt platform plugin "windows"