小杨第二十一节教科书复习(学习新知识点:类的嵌套,枚举)
小杨第二十一节课后补充和知识点总结(赠送)
C# 枚举(Enum)
在C#中,enum( 枚举类型)用于将常量名称分配给一组数字整数值。它使常量值更易读,例如,WeekDays.Monday在引用一周中的某天时,其可读性比数字0 更易读。 枚举是直接在命名空间、类或结构中使用 enum 关键字定义的。所有常量名都可以在大括号内声明,并用逗号分隔。下面定义了工作日的枚举。 - enum WeekDays
- {
- Monday,
- Tuesday,
- Wednesday,
- Thursday,
- Friday,
- Saturday,
- Sunday
- }
复制代码上面,WeekDays枚举在每行中声明成员,每行用逗号分隔。
枚举值
如果未将值分配给枚举成员,则编译器将在默认情况下为每个成员分配整数值(从零开始)。枚举的第一个成员将为0,并且每个连续枚举成员的值将增加1。
- enum WeekDays
- {
- Monday, // 0
- Tuesday, // 1
- Wednesday, // 2
- Thursday, // 3
- Friday, // 4
- Saturday, // 5
- Sunday // 6
- }
复制代码 可以为枚举成员分配不同的值。枚举成员的默认值的更改将自动按顺序向其他成员分配增量值。
- enum Categories
- {
- Electronics, // 0
- Food, // 1
- Automotive = 6, // 6
- Arts, // 7
- BeautyCare, // 8
- Fashion // 9
- }
复制代码 您甚至可以为每个成员分配不同的值。
- enum Categories
- {
- Electronics = 1,
- Food = 5,
- Automotive = 6,
- Arts = 10,
- BeautyCare = 11,
- Fashion = 15,
- WomanFashion = 15
- }
复制代码枚举可以是任何数字数据类型,例如 byte,sbyte,short,ushort,int,uint,long 或 ulong。但是,枚举不能为字符串类型。 在 enum 名称后指定类型为:type。下面定义了字节 enum。 - enum Categories: byte
- {
- Electronics = 1,
- Food = 5,
- Automotive = 6,
- Arts = 10,
- BeautyCare = 11,
- Fashion = 15
- }
复制代码 访问一个枚举
可以使用点语法: enum.member 访问枚举
- enum WeekDays
- {
- Monday,
- Tuesday,
- Wednesday,
- Thursday,
- Friday,
- Saturday,
- Sunday
- }
- Console.WriteLine(WeekDays.Monday); // 星期一
- Console.WriteLine(WeekDays.Tuesday); // 星期二
- Console.WriteLine(WeekDays.Wednesday); // 星期三
- Console.WriteLine(WeekDays.Thursday); // 星期四
- Console.WriteLine(WeekDays.Friday); // 星期五
- Console.WriteLine(WeekDays.Saturday); // 星期六
- Console.WriteLine(WeekDays.Sunday); // 星期日
复制代码 转换枚举
从枚举类型转换为其基础整数类型需要显式强制转换。
- enum WeekDays
- {
- Monday,
- Tuesday,
- Wednesday,
- Thursday,
- Friday,
- Saturday,
- Sunday
- }
- Console.WriteLine(WeekDays.Friday); //输出:星期五
- int day = (int) WeekDays.Friday; // 枚举到int的转换
- Console.WriteLine(day); //输出:4
-
- var wd = (WeekDays) 5; // 从int到枚举的转换
- Console.WriteLine(wd);//输出:星期六
复制代码 enum是一个抽象类。
https://www.cainiaojc.com/csharp/csharp-enum.html
C#中类的嵌套:
在C#中,一个类可以定义在另一个类的内部,这就是类的嵌套。类的嵌套可以提供更好的封装,因为它可以让外部代码不能直接访问嵌套类的内部实现。同时,嵌套类也能够访问外部类的所有成员。 下面是一个C#中类的嵌套的例子: - public class OuterClass
- {
- private int outerField;
-
- public class NestedClass
- {
- private int nestedField;
-
- public void NestedMethod()
- {
- // 访问外部类的字段
- outerField = 10;
-
- // 访问内部类的字段
- nestedField = 20;
- }
- }
- }
-
- class Program
- {
- static void Main(string[] args)
- {
- // 创建外部类实例
- OuterClass outer = new OuterClass();
-
- // 创建嵌套类实例
- OuterClass.NestedClass nested = new OuterClass.NestedClass();
-
- // 访问嵌套类的方法
- nested.NestedMethod();
- }
- }
复制代码 在这个例子中,NestedClass是OuterClass的嵌套类。NestedClass可以直接访问OuterClass的私有字段outerField。程序的主入口Main中,我们首先创建了OuterClass的实例,然后创建了NestedClass的实例,并调用了NestedMethod方法。
- public class OuterClass
- {
- private int outerField;
- public class NestedClass
- {
- private int nestedField;
- private OuterClass outerInstance;
- // 构造函数,接收外部类实例
- public NestedClass(OuterClass outer)
- {
- outerInstance = outer;
- }
- public void NestedMethod()
- {
- // 通过外部类实例访问外部类的字段
- outerInstance.outerField = 10;
- // 访问内部类的字段
- nestedField = 20;
- }
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- // 创建外部类实例
- OuterClass outer = new OuterClass();
- // 创建嵌套类实例,需要传入外部类实例
- OuterClass.NestedClass nested = new OuterClass.NestedClass(outer);
- // 访问嵌套类的方法
- nested.NestedMethod();
- }
- }
复制代码
|