SamHou's Blog IconSamHou's Blog

Csharp读书笔记(三)-封装

C# 教程2022-01-23

我就是手贱
#csharp#hfc

本文介绍 C# 封装如何保护对象内部状态,讲解私有字段、属性的 get 与 set、自动属性及其与后备字段的关系,并说明如何在设置属性时加入逻辑。文章还通过构造函数初始化对象,展示用属性控制数据读写、避免直接修改字段造成状态错误的基本做法,配合简单代码说明属性的使用过程。

封装

  • 封装保证类中一些数据是私有的
  • 私有字段、方法只能在类内部访问,使用关键字private
  • 封装可以避免不必要的错误

属性

  • 属性对于其他对象来说就是字段
  • 可以通过属性获取或设置一个后备字段
  • 属性首字母大写,后备字段应小写
  • 属性的好处:在获取或设置时可以执行一些语句(比如设置一些有关的字段),防止直接更改字段导致逻辑计算错误
  • 获取get
  • 设置set
  • 每个set都有一个名为value的参数,获取的是设置的值
  • 可以只设置get或set中的一个
  • 举例:
private int numberOfComputers;//这是一个后备字段
private int displays;//这是另一个字段
public int NumberOfComputers//这是一个属性
{
 get
 {
  return numberOfComputers;
 }
 set
 {
  numberOfComputers = value;//设置后备字段
  displays = value*2;
  /*举例,每台电脑需要2个显示器,
  *这样封装可以防止直接从外部
  *修改displays,
  *而外部代码可能发生错误导致dispalys不是2倍
  *这就避免了不必要的错误
  */
 }
}
  • 在窗体应用执行Console.WriteLine()时,输出显示在output窗口
  • 输入prop,再按下tab,会向代码中添加一个自动属性

构造函数

  • 构造函数会在类创建时执行
  • 构造函数没有返回值
  • 添加构造函数时,需要添加一个与类同名的方法,但是没有返回值
  • 构造函数可以用来在创建实例时为私有变量指定值
  • 当然也可以做更多事情

知识拓展

  • 方法的第一行包含存取修饰符、返回值、名字和参数,这些称之为签名
  • 属性也有签名

无内鬼,来点评论

提示:复制文章链接,贴入 Fedi 软件的搜索框,可以快速找到文章对应的评论区!

还没有评论,去 Fediverse 上喵两句如何?