C#程序设计 第3章C#面向对象编程
C# 程序设计 第3章 C#面向对象编程
结构和枚举 结构和枚举 ★ 结构 枚举 掌握枚举的声明和使用 掌握结构的声明和使用 理解结构和类的区别 wh 2
结构和枚举 2 结构和枚举 枚举 ★ 结构 掌握枚举的声明和使用 掌握结构的声明和使用 理解结构和类的区别
什么是结构 结构和枚举 什么是结构? 把一系列相关的变量组织成单一实体的过程,在 C#中称为生成结构的过程。这个单一实体的类型 就叫做结构类型,每一个变量称为结构的成员。 结构可视为轻量级的类,在需要一个小的数 据结构时,最好使用结构
结构和枚举 3 什么是结构 什么是结构? 把一系列相关的变量组织成单一实体的过程,在 C#中称为生成结构的过程。这个单一实体的类型 就叫做结构类型,每一个变量称为结构的成员。 结构可视为轻量级的类,在需要一个小的数 据结构时,最好使用结构
10.12结构的声明 结构和枚举 常量;字段;方法 口结构的声明 属性 事件 访问修饰符struct结构名 索引器 运算符重载 定义结构成员 带参数构造函数 嵌套结构 public struct Student 构成和类相似 public string studentName,studentlD; public int Age; 定义成员变量不能赋初值 public void SayHi() { 成员方法
结构和枚举 4 10.1.2 结构的声明 ❑ 结构的声明 public struct Student { public string studentName,studentID; public int Age; public void SayHi() { . } } 访问修饰符 struct 结构名 { 定义结构成员 } 构成和类相似 定义成员变量不能赋初值 成员方法 常量;字段;方法 属性 事件 索引器 运算符重载 带参数构造函数 嵌套结构
结构成员 结构和枚举 口注意: ·结构不支持继承,所以结构成员的可访问性不能是protected 或protected internal ·结构中的函数成员不能是abstract.或virtual.,override修 饰符只适用于重写从System.ValueType继承的方法 ·结构不能声明默认构造函数(编译器提供)或析构函数 ·编译器提供默认构造函数以将结构成员初始化为它们的默认 值 ·不允许它的实例字段声明时初始化,但常量和静态字段可以 声明时初始化 5
结构和枚举 5 结构成员 ❑ 注意: ▪ 结构不支持继承,所以结构成员的可访问性不能是protected 或protected internal ▪ 结构中的函数成员不能是abstract或virtual, override修 饰符只适用于重写从System.ValueType 继承的方法 ▪ 结构不能声明默认构造函数(编译器提供)或析构函数 ▪ 编译器提供默认构造函数以将结构成员初始化为它们的默认 值 ▪ 不允许它的实例字段声明时初始化,但常量和静态字段可以 声明时初始化
结构调用 结构和枚举 口使用new运算符创建结构变量 ·结构名结构变量名=new结构名([参数表]); 口声明变量,然后初始化结构的字段 ·结构类型结构变量; ·结构变量名.字段名=初始值; ·在没有完全初始化所有字段之前,结构变量都被看成是未 赋值的,因此不能引用其未赋值的字段和函数成员 nh 6
结构和枚举 6 结构调用 ❑ 使用new运算符创建结构变量 ▪ 结构名 结构变量名= new 结构名 ([参数表]); ❑ 声明变量,然后初始化结构的字段 ▪ 结构类型 结构变量; ▪ 结构变量名.字段名=初始值; ▪ 在没有完全初始化所有字段之前,结构变量都被看成是未 赋值的,因此不能引用其未赋值的字段和函数成员
结构和枚举 struct Student 示 可以有构造函数 public Student(string name,string id,int age) this.studentName name; this.studentID=id; 只能声明有参数的构造 函数,并且要实例化所有 实例字段。 构造函数传参 Student myStu new Student("张靓靓",“201101”,20); myStu.SayHi(); wN7
结构和枚举 7 . Student myStu = new Student("张靓靓",“201101”, 20); myStu.SayHi(); . struct Student { . public Student(string name, string id, int age) { this.studentName = name; this.studentID= id; . } } 可以有构造函数 只能声明有参数的构造 函数,并且要实例化所有 实例字段。 构造函数传参
结构和枚举 Student myStu; 定义结构可以不用new myStu.Age=20; nyStu.studentName="张靓靓"; 为结构成员赋值 myStu.studentID=201102"; myStu.SayHi(); 调用结构的方法 nh 8
结构和枚举 8 . Student myStu; myStu.Age = 20; myStu.studentName = "张靓靓"; myStu.studentID = “201102"; myStu.SayHi(); . 定义结构可以不用new 为结构成员赋值 调用结构的方法
结构和类的区别与联系 结构和枚举 口结构与类很相似,均为包含数据成员和函数成员的数 据结构 ·结构可视为轻量级的类,在需要一个小的数据结构时,最 好使用结构 ·结构是存储在堆栈上的值类型 ·可以通过装箱/拆箱操作,实现与object类型或由该结构实 现的接口类型之间的转换 ·.Net内建的基本数据类型均采用结构实现
结构和枚举 9 结构和类的区别与联系 ❑ 结构与类很相似,均为包含数据成员和函数成员的数 据结构 ▪ 结构可视为轻量级的类,在需要一个小的数据结构时,最 好使用结构 ▪ 结构是存储在堆栈上的值类型 ▪ 可以通过装箱/拆箱操作,实现与object类型或由该结构实 现的接口类型之间的转换 ▪ .Net内建的基本数据类型均采用结构实现
理解结构与类的区别 结构和枚举 口结构是值类型-直接右烛估 student1.Age Age=1 Age=1 8 Age Age=1 Age=2 8 8 0 个个 个 student1 student1 studnet2 student1 studnet2 student1.Age =18 student2 student1 student2.Age =20 wh 10
结构和枚举 10 理解结构与类的区别 ❑ 结构是值类型-直接存储值 student1 studnet2 Age=1 8 student1 student1.Age = 18 Age=1 8 Age student2 = student1 student1.Age student1 studnet2 Age=1 8 Age=2 0 student2.Age = 20