找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
游戏黄埔已经开课啦,大家速速报名赶快上车
查看: 590|回复: 0

小杨第二十一节教科书录屏(学习新知识点:类的嵌套,枚举)

[复制链接]

162

主题

33

回帖

891

积分

管理员

积分
891
发表于 2025-1-6 15:11:47 | 显示全部楼层 |阅读模式

小杨第二十一节教科书复习(学习新知识点:类的嵌套,枚举)


小杨第二十一节课后补充和知识点总结(赠送)

C# 枚举(Enum)

在C#中,enum( 枚举类型)用于将常量名称分配给一组数字整数值。它使常量值更易读,例如,WeekDays.Monday在引用一周中的某天时,其可读性比数字0 更易读。

枚举是直接在命名空间、类或结构中使用 enum 关键字定义的。所有常量名都可以在大括号内声明,并用逗号分隔。下面定义了工作日的枚举。

  1. enum WeekDays
  2. {
  3.     Monday,
  4.     Tuesday,
  5.     Wednesday,
  6.     Thursday,
  7.     Friday,
  8.     Saturday,
  9.     Sunday
  10. }
复制代码

上面,WeekDays枚举在每行中声明成员,每行用逗号分隔。

枚举值
如果未将值分配给枚举成员,则编译器将在默认情况下为每个成员分配整数值(从零开始)。枚举的第一个成员将为0,并且每个连续枚举成员的值将增加1。

  1. enum WeekDays
  2. {
  3.     Monday,     // 0
  4.     Tuesday,    // 1
  5.     Wednesday,  // 2
  6.     Thursday,   // 3
  7.     Friday,     // 4
  8.     Saturday,   // 5
  9.     Sunday      // 6
  10. }
复制代码
可以为枚举成员分配不同的值。枚举成员的默认值的更改将自动按顺序向其他成员分配增量值。

  1. enum Categories
  2. {
  3.     Electronics,    // 0
  4.     Food,           // 1
  5.     Automotive = 6, // 6
  6.     Arts,           // 7
  7.     BeautyCare,     // 8
  8.     Fashion         // 9
  9. }
复制代码
您甚至可以为每个成员分配不同的值。
  1. enum Categories
  2. {
  3.     Electronics = 1,  
  4.     Food = 5,
  5.     Automotive = 6,
  6.     Arts = 10,
  7.     BeautyCare = 11,
  8.     Fashion = 15,
  9.     WomanFashion = 15
  10. }
复制代码

枚举可以是任何数字数据类型,例如 byte,sbyte,short,ushort,int,uint,long 或 ulong。但是,枚举不能为字符串类型。

在 enum 名称后指定类型为:type。下面定义了字节 enum。

  1. enum Categories: byte
  2. {
  3.     Electronics = 1,  
  4.     Food = 5,
  5.     Automotive = 6,
  6.     Arts = 10,
  7.     BeautyCare = 11,
  8.     Fashion = 15
  9. }
复制代码
访问一个枚举

可以使用点语法: enum.member 访问枚举
  1. enum WeekDays
  2. {
  3.     Monday,
  4.     Tuesday,
  5.     Wednesday,
  6.     Thursday,
  7.     Friday,
  8.     Saturday,
  9.     Sunday
  10. }

  11. Console.WriteLine(WeekDays.Monday); // 星期一
  12. Console.WriteLine(WeekDays.Tuesday); // 星期二
  13. Console.WriteLine(WeekDays.Wednesday); // 星期三
  14. Console.WriteLine(WeekDays.Thursday); // 星期四
  15. Console.WriteLine(WeekDays.Friday); // 星期五
  16. Console.WriteLine(WeekDays.Saturday); // 星期六
  17. Console.WriteLine(WeekDays.Sunday); // 星期日
复制代码
转换枚举
从枚举类型转换为其基础整数类型需要显式强制转换。

  1. enum WeekDays
  2. {
  3.     Monday,
  4.     Tuesday,
  5.     Wednesday,
  6.     Thursday,
  7.     Friday,
  8.     Saturday,
  9.     Sunday
  10. }

  11. Console.WriteLine(WeekDays.Friday); //输出:星期五
  12. int day = (int) WeekDays.Friday; // 枚举到int的转换
  13. Console.WriteLine(day); //输出:4
  14.                
  15. var wd = (WeekDays) 5; // 从int到枚举的转换
  16. Console.WriteLine(wd);//输出:星期六
复制代码
enum是一个抽象类。


https://www.cainiaojc.com/csharp/csharp-enum.html


C#中类的嵌套:
在C#中,一个类可以定义在另一个类的内部,这就是类的嵌套。类的嵌套可以提供更好的封装,因为它可以让外部代码不能直接访问嵌套类的内部实现。同时,嵌套类也能够访问外部类的所有成员。
下面是一个C#中类的嵌套的例子:
  1. public class OuterClass
  2. {
  3.     private int outerField;

  4.     public class NestedClass
  5.     {
  6.         private int nestedField;

  7.         public void NestedMethod()
  8.         {
  9.             // 访问外部类的字段
  10.             outerField = 10;

  11.             // 访问内部类的字段
  12.             nestedField = 20;
  13.         }
  14.     }
  15. }

  16. class Program
  17. {
  18.     static void Main(string[] args)
  19.     {
  20.         // 创建外部类实例
  21.         OuterClass outer = new OuterClass();

  22.         // 创建嵌套类实例
  23.         OuterClass.NestedClass nested = new OuterClass.NestedClass();

  24.         // 访问嵌套类的方法
  25.         nested.NestedMethod();
  26.     }
  27. }
复制代码
在这个例子中,NestedClassOuterClass的嵌套类。NestedClass可以直接访问OuterClass的私有字段outerField。程序的主入口Main中,我们首先创建了OuterClass的实例,然后创建了NestedClass的实例,并调用了NestedMethod方法。


  1. public class OuterClass
  2. {
  3.     private int outerField;

  4.     public class NestedClass
  5.     {
  6.         private int nestedField;
  7.         private OuterClass outerInstance;

  8.         // 构造函数,接收外部类实例
  9.         public NestedClass(OuterClass outer)
  10.         {
  11.             outerInstance = outer;
  12.         }

  13.         public void NestedMethod()
  14.         {
  15.             // 通过外部类实例访问外部类的字段
  16.             outerInstance.outerField = 10;

  17.             // 访问内部类的字段
  18.             nestedField = 20;
  19.         }
  20.     }
  21. }

  22. class Program
  23. {
  24.     static void Main(string[] args)
  25.     {
  26.         // 创建外部类实例
  27.         OuterClass outer = new OuterClass();

  28.         // 创建嵌套类实例,需要传入外部类实例
  29.         OuterClass.NestedClass nested = new OuterClass.NestedClass(outer);

  30.         // 访问嵌套类的方法
  31.         nested.NestedMethod();
  32.     }
  33. }
复制代码




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|平顶山市图灵科技 ( 豫ICP备2024088136号-1| 豫公网安备41040202000275号 )

GMT+8, 2025-5-23 07:55 , Processed in 0.040621 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表