C#类与对象的成员(汇总)

image.png

字段

image.png

字段简介

image.png

①字段其实就是“变量”,是为存储数据而存在的,只不过是指定于“对象或类型”。 ②字段又名“成员变量”,分为“实例字段”和“静态字段”。 ③“实例字段”:实例状态(对象/实例);“静态字段”:类型状态(类型/群体)。 ④对于“实例字段”,每次创建字段会初始化一次;对于“静态字段”,只初始化一次。 ⑤当一个数据类型被运行环境加载时,它的静态构造器会被调用,因为数据类型只会被加载一次,因此静态构造器永远只执行一次。 image.png,其中image.png等价于image.png

C语言中阐述字段的由来(左图) | C#中阐述字段(右图)
image.png1656809502383.png

只读字段 readonly

可以进行初始化,但不能够再进行赋值。

image.png

属性

image.png

属性简介

(11)字段 属性 索引器 常量 - 图11
最初保护字段的方法案例

c++和Java仍然在使用(因为没有C#属性这个概念)。

image.pngimage.png
C#属性实际案例
image.png
C#背后的秘密:

①其实是一种“语法糖”,隐藏复杂的逻辑。反编译后发现: get_Age()和set_Age()方法不是由自己写的,而是编译器编译属性时自动写的。用时调用即可。

image.png

Code Snippet

  1. prop + 2 * TAB:属性的简略声明image.png
  2. propfull + 2 * TAB:属性的完整声明

image.png 3.光标指示到字段上,先Ctrl,再R,再E即可快速创建属性简略声明。

拓展

只读属性:
image.png
非只读属性:
1656815098823.png

动态计算值的属性

用于动态计算值的顺序…

案例:主动计算,每次获取 CanWork 时都计算,适用于 CanWork 属性使用频率低的情况。

  1. class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. try{
  6. var stu1 = new Student();
  7. stu1.Age = 12;
  8. Console.WriteLine(stu1.CanWork);
  9. }catch (Exception ex){
  10. Console.WriteLine(ex.Message);
  11. }
  12. }
  13. }
  14. class Student{
  15. private int age;
  16. public int Age{
  17. get { return age; }
  18. set{age = value;}
  19. }
  20. public bool CanWork{
  21. get{return age > 16;}
  22. }
  23. }

索引器

image.png

索引器简介

①一般是集合类型才拥有

image.png

Code Snippet
index + 2 * TAB:快速声明索引器

常量

image.png

常量简介

成员常量举例:image.png
局部常量举例:
image.png