第4章c#类型和语句成分 4.1关键字、标识符和注释 411关键字 412标识符 413标识符的命名 413.1匈牙利表示法( Hungarian notation) 4.1.3.2骆驼表示法( camel notation) 41.3.3 Pascal表示法( Pascal notation) 414注释 4141单行注释 4142多行注释 41.43XML注释
第4章 C#类型和语句成分 ◼ 4.1 关键字、标识符和注释 4.1.1 关键字 4.1.2 标识符 4.1.3 标识符的命名 4.1.3.1 匈牙利表示法(Hungariannotation) 4.1.3.2 骆驼表示法(camel notation) 4.1.3.3 Pascal表示法(Pascal notation ) 4.1.4 注释 4.1.4.1 单行注释 4.1.4.2 多行注释 4.1.4.3 XML注释
4.2c#类型基础 ■421公共语言规范、公共类型系统和类型名 422 System object类 42.3存放对象 的区域:栈和堆 值 简单类型 用户自定义类型 枚举类型 424C#的类型 用户自定义类型 系统 类类型 指针类型 用户自定义类型 数组 接口 类 指针类型 型 接 图46C#的类型系统
4.2 C#类型基础 ◼ 4.2.1 公共语言规范、公共类型系统和类型名 ◼ 4.2.2 System.Object类 值 类 型 类 型 引 用 类 型 简单类型 用户自定义类型 枚举类型 用户自定义类型 指针类型 接口 类类型 数组 用户自定义类型 指针类型 接口 图4.6 C#的类型系统 ◼ 4.2.3 存放对象 的区域:栈和堆 ◼ 4.2.4 C#的类型 系统
4.25引用类型概念 引用类型包括类( class)、接口( interface)、数组(aray) 委托( delegate)、 object和字符串( string),另外还包括不 提倡使用的指针类型 在习惯上,引用类型的变量称为对象,而值类型的变量仍然称 为变量,但是请注意在本质上,一切类型产生的实例都是对 象,C#是完全面向对象的 4.2.6值类型和内置类型的概念 42.7值类型和引用类型的存储方案比较 428变量、常量和文字
4.2.5 引用类型概念 引用类型包括类(class)、接口(interface)、数组(array)、 委托(delegate)、object和字符串(string),另外还包括不 提倡使用的指针类型。 在习惯上,引用类型的变量称为对象,而值类型的变量仍然称 为变量,但是请注意在本质上,一切类型产生的实例都是对 象,C#是完全面向对象的。 ◼ 4.2.6 值类型和内置类型的概念 ◼ 4.2.7 值类型和引用类型的存储方案比较 ◼ 4.2.8 变量、常量和文字
4.3简单类型 431整数类型 整型包括byte、 sbyte、char、 short、 ushort、int、uint、long、 ulong九种类型 432浮点数类型 在C#中,实数的存储结构分为浮点数类型和 decimal类型两 种,但是习惯上,实数类型常常指浮点数类型的实数。浮点 数分为32位单精度浮点数和64位双精度浮点数,CTS中的名 称是 Single和 Double,C#中的别名是foat和 double 433 decimal类型 4.34布尔类型
4.3 简单类型 整型包括byte、sbyte、char、short、ushort、int、uint、long、 ulong九种类型。 ◼ 4.3.1 整数类型 ◼ 4.3.2 浮点数类型 ◼ 4.3.3 decimal类型 ◼ 4.3.4 布尔类型 在C#中,实数的存储结构分为浮点数类型和decimal类型两 种,但是习惯上,实数类型常常指浮点数类型的实数。浮点 数分为32位单精度浮点数和64位双精度浮点数,CTS中的名 称是Single和Double,C#中的别名是float和double
4.4枚举类型 值类型中有两个复合型类型:枚举和结构。枚举类型有三个要素:枚举对象 名、枚举成员和基础类型 枚举成员是一组字段,即,一组逻辑上相关联的常数,称为命名常数;基础 类型是某一种内置的整数类型,即,必须是byte、 sbyte、 short、 ushort、 int、uint、long或 ulong中的一种,int类型是默认的基础类型 枚举成员的名必须在该枚举中是唯一的。枚举成员和基础类型之间存在对应 关系,默认的情况下,成员按照排列的顺序,依次赋以0、1、2、3 等整数值,这样的值称为关联值。关联值可以由程序员显式地指定。枚 举类型的关联值集和它的基础类型值集相同,并且不只限于命名常数的 值,但是枚举成员的关联值不能超出基础类型的取值范围。 用关键字enum声明一个枚举: 特性修饰符enum枚举名:基础类型 枚举成员声明,枚举成员声明, 枚举成员声明} 其中特性( attribute)和修饰符是可选的,关于特性和修饰符的知识以后章 节中介绍。在枚举成员声明中可以为成员指定一个基础类型范围内的值,一 几个成员允许共享同一个值
4.4 枚举类型 值类型中有两个复合型类型:枚举和结构。枚举类型有三个要素:枚举对象 名、枚举成员和基础类型。 枚举成员是一组字段,即,一组逻辑上相关联的常数,称为命名常数;基础 类型是某一种内置的整数类型,即,必须是byte、sbyte、short、ushort、 int、uint、long 或 ulong中的一种,int类型是默认的基础类型。 枚举成员的名必须在该枚举中是唯一的。枚举成员和基础类型之间存在对应 关系,默认的情况下,成员按照排列的顺序,依次赋以0、1、2、3 …… 等整数值,这样的值称为关联值。关联值可以由程序员显式地指定。枚 举类型的关联值集和它的基础类型值集相同,并且不只限于命名常数的 值,但是枚举成员的关联值不能超出基础类型的取值范围。 用关键字enum声明一个枚举: 特性 修饰符 enum 枚举名 : 基础类型 {枚举成员声明,枚举成员声明,……,枚举成员声明} 其中特性(attribute)和修饰符是可选的,关于特性和修饰符的知识以后章 节中介绍。在枚举成员声明中可以为成员指定一个基础类型范围内的值, 几个成员允许共享同一个值
4.5运算符和表达式 4.5.1运算符概述 4.52表达式 4.6默认值 4.53算术运算符 4.54关系运算符 ■4.5.5逻辑运算符和位运算符 ■4.5.6增量减量运算符 ■4.5.7条件运算符 4.58运算的优先级和结合性
4.5 运算符和表达式 ◼ 4.5.1 运算符概述 ◼ 4.5.2 表达式 ◼ 4.5.3 算术运算符 ◼ 4.5.4 关系运算符 ◼ 4.5.5 逻辑运算符和位运算符 ◼ 4.5.6 增量减量运算符 ◼ 4.5.7 条件运算符 ◼ 4.5.8 运算的优先级和结合性 4.6 默认值
4.7类型转换 4.7.1隐式类型转换 47.2显式转换 48装箱和拆箱 48.1装箱 4.8.2拆箱
4.7 类型转换 ◼ 4.7.1 隐式类型转换 ◼ 4.7.2 显式转换 ◼ 4.8.1 装箱 ◼ 4.8.2 拆箱 4.8 装箱和拆箱
4.8.1装箱 值类型本质上是结构,结构类型的值被装箱的过程,是动态地生 成为obet类型或由该结构实现的接口类型的对象 实现装箱操作可以用隐式装箱或者显式装箱,例如: int vaITwo=333 object obj2=vawo;∥隐式装箱 也可以采用显式的装箱 int valTwo=333 object obj2=(object) valTwo
4.8.1 装箱 值类型本质上是结构,结构类型的值被装箱的过程,是动态地生 成为object类型或由该结构实现的接口类型的对象。 实现装箱操作可以用隐式装箱或者显式装箱,例如: int valTwo=333; object obj2=valTwo; //隐式装箱 也可以采用显式的装箱: int valTwo=333; object obj2= (object) valTwo;
4.8.2拆箱 拆箱的过程是将 object类型或值类型实现的接口类型显式地转换 成值类型。拆箱的过程首先要检查被拆箱的引用对象中的数据是 否能合法地转换为值类型数据。例如: int val= 19969 object obj=(object)val; ∥装箱 int j=(int)obj; /拆箱 char c=(char)int)ob;∥拆箱后显式转换 double d=(int)ob;拆箱后隐式转换 Console. Writeline(c); 显示汉字“丁” Console. Writeline(d); ∥显示数“19969” val++ Console. writeline(va);/箱外的值已经改变 Console. writeline(obj);/已经装箱的内容没变
4.8.2 拆箱 拆箱的过程是将object类型或值类型实现的接口类型显式地转换 成值类型。拆箱的过程首先要检查被拆箱的引用对象中的数据是 否能合法地转换为值类型数据。例如: int val = 19969; object obj= (object) val; //装箱 int j=(int)obj; //拆箱 char c=(char)(int)obj; //拆箱后显式转换 double d=(int)obj; //拆箱后隐式转换 Console.WriteLine(c); //显示汉字“丁” Console.WriteLine(d); //显示数“19969” val++; Console.WriteLine(val); //箱外的值已经改变 Console.WriteLine(obj); //已经装箱的内容没变